C'est le code que j'ai actuellement:
<div>
<ul class="nav nav-pills nav-stacked">
<li>
<li>
<li>
<li>
<li>
<section>
<span name="merchant">ABZ</span>
</section>
<section>
<span class="glyphicon glyphicon-pencil" name="edit"></span>
<span class="glyphicon glyphicon-remove" name="delete"></span>
</section>
</li>
<li>
<li>
<li>
<li>
</ul>
<div class="add-item bottom" name="new-merchant">
</div>
J'ai essayé ce qui suit:
xpath=//span[contains(.,'ABZ')]/following-sibling::section/span[@name='edit']
xpath=//span[contains(.,'ABZ')]/following-sibling::span[1]
J'utilise Selenium et je veux qu'il clique sur le bouton d'édition situé juste après la variable ABZ span
.
Ce xpath a fonctionné pour moi sous Chrome, en utilisant votre code HTML:
//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']
Modifier
Le ..
signifie monter d'un niveau. Le ..
prend le sélecteur de span
à section
. Ensuite, le following-sibling
trouve la section
après le parent section
de votre span
correspondante.
Votre sélecteur d'origine correspondait à span
, puis recherchait un following-sibling
à span
.
En ajoutant à la réponse ci-dessus, les deux expressions ci-dessous fonctionneront bien.
//span[contains(text(), 'ABZ')]/following::section/span[@name='edit']
OR
//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']
Notamment, l'axe qui suit choisira chaque nœud qui suit le nœud de contexte, tandis que l'axe qui suit un frère choisira uniquement les nœuds frères du nœud de contexte.