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>