Match ambigu à l'aide de ny-child capybara
Je suis en train de tester que le tri fonctionne sur une application que je suis en train de tester. J'ai ajouté 2 entrées " a " et "b". Je souhaite tester un comparaître devant b. Html est comme suit:
<ul id="attendee-list" class="bars">
<div>
<li id="attendee-812202" class="bar border link attendee">
<a class="expandable clearfix" href="#!/person/812202/">
</div>
<div class="description">
<p class="title">a</p>
<p class="subtitle"></p>
<p class="subtitle"></p>
</div>
</a>
</li>
</div>
<div>
<li id="attendee-812206" class="bar border link attendee">
<a class="expandable clearfix" href="#!/person/812206/">
<div class="description">
<p class="title">b</p>
<p class="subtitle"></p>
<p class="subtitle"></p>
</div>
</a>
</li>
</div>
</ul>
Donc ce que j'ai essayé est le suivant:
find("ul.bars li:nth-child(1) a div.description p.title").should have_content("a")
find("ul.bars li:nth-child(2) a div.description p.title").should have_content("b")
Mais j'ai l'ambiguïté d'un match d'erreur. Personne ne sait si je suis en train de faire quelque chose de mal ici ou peut-être une autre méthode pour vérifier?
source d'informationauteur user1523236
Vous devez vous connecter pour publier un commentaire.
Problème
Le problème est le
li:nth-child(1)
. Cela dit, pour trouver unli
qui est le premier enfant de son parent. Depuis chaqueli
est enveloppé dans undiv
à la foisli
éléments sont d'abord les enfants - c'est à dire les deux titres sont retournés par le sélecteur deul.bars li:nth-child(1) a div.description p.title
(d'où l'ambiguïté de match).Solution 1 - Trouver Tous Les
Je pense que la solution la plus simple est d'utiliser le css sélecteur de retourner tous les titres et ensuite utiliser Capybara pour vérifier la première et la deuxième.
Solution De 2 - Xpath
Une solution alternative, si vous ne voulez pas d'obtenir tous (peut-être il y a de trop nombreux sur la page), c'est d'essayer de xpath. Il n'est pas très jolie, mais vous pouvez le faire: