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 />
/>
3 Réponses :
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"
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])
})
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>