1
votes

obtenir un élément enfant en cyprès

Je veux obtenir un élément children qui a le nom d'attribut "tag-test" et la valeur est "tab"

Une partie du HTML que je veux tester ressemble à ci-dessous

cy.get('ul[tag-test]=tab')
  .then((ul) => { 
     console.log(ul)  // <ul> ... </ul> . 
   }) 
  

comment puis-je obtenir le dernier li de ul en tant qu'objet jquery?

les codes ci-dessous que j'ai consignés sur la console montrent

    ...

comment puis-je aller plus loin de

    ...

?

  ... 
  <ul
     tag-test="tab"
  >
   <li  />
   <li  />
   <li  />
  />


0 commentaires

3 Réponses :


1
votes

D'après votre code, je peux voir que le localisateur pour le test de balise n'est pas correct, il devrait ressembler à ceci:

cy.get('ul [tag-test="tab"]')

Avec ce localisateur, vous obtiendrez tous les ul éléments avec l'attribut tag-test="tab"


0 commentaires

0
votes

vous pouvez utiliser .find pour résoudre notre problème

Dans votre cas,

cy.get('ul[tag-test="tab"]')
.find('li')
  .then($li => {

     //$li will contain all the li elements inside your ul as an array
     cy.log($li)

     //if you want a specific li item use $li[index]
     cy.log($li[0])

     //if you want the last li item use the length of the returned li array
     cy.log($li[$li.lenght -1])

   }) 


0 commentaires

3
votes

Pour rechercher le dernier li dans le ul , vous pouvez utiliser le pseudo-sélecteur CSS last-child .

Pour exemple, en utilisant ce fragment de test

cy.get('ul[tag-test=tab]')
  .find('li:last-child')
  .then($lastLI => {
    expect($lastLI).to.contain(3)
  })

le test pourrait être

cy.get('ul[tag-test=tab]')
  .find('li:last-child')     // use find here to restrict search to previous subject
  .contains('3')

ou pour récupérer l'objet jQuery

<ul tag-test="tab">
  <li>1</li>
  <li>2</li>
  <li>3</li>        // test should find this one
</ul>

<ul tag-test="another">
  <li>4</li>
  <li>5</li>
  <li>6</li>        // test should ignore this one
</ul>


0 commentaires