102 votes

Comment sélectionner nœud spécifié dans Xpath nœud séries par index avec du Sélénium?

Je suis en train d'écrire une Sélénium cas de test. Et voici l'expression xpath-je utiliser pour correspondre à tous les "Modifier", les boutons dans un tableau de données.

//img[@title='Modify']

Ma question est, comment puis-je visiter la correspondance nœud séries par index? J'ai essayé avec

//img[@title='Modify'][i]

et

//img[@title='Modify' and position() = i]

Mais aucun ne fonctionne.. J'ai aussi essayé avec XPath checker(Une extension de firefox). Il est totalement 13 matches trouvé, alors j'ai vraiment aucune idée de comment je vais sélectionner l'un d'entre eux.. Ou ne XPath support spécifié sélection de noeuds qui ne sont pas sous le même nœud parent?

226voto

Dimitre Novatchev Points 147842

C'est une question de la FAQ:

//someName[3]

moyens: tous someName éléments dans le document, que sont le troisième enfant de leur parent -- il peut y avoir plusieurs de ces éléments.

Ce que vous voulez, c'est exactement la 3e someName élément:

(//someName)[3]

Explication: l' [] a une priorité plus élevée (priorité) qu' //. Rappelez-vous toujours de mettre des expressions du type //someName entre parenthèses lorsque vous avez besoin de spécifier le n-ième nœud de leur nœud sélectionné de la liste.

17voto

Tomalak Points 150423

Il n'y a pas d' i dans XPath.

Soit vous utilisez littérale des nombres: //img[@title='Modify'][1]

Ou vous faites construire l'expression de chaîne de façon dynamique: '//img[@title='Modify']['+i+']' (mais gardez à l'esprit que la dynamique des expressions XPath ne fonctionnent pas à partir à l'intérieur de XSLT).

Ou ne XPath support spécifié sélection de nœuds qui ne sont pas sous le même nœud parent?

Oui: (//img[@title='Modify'])[13]


Cette //img[@title='Modify'][i] signifie "tout <img> avec un titre de "Modifier", et un élément enfant nommé <i>."

2voto

Nick Jones Points 2958
//img[@title='Modify'][i]

est l'abréviation de

/descendant-or-self::node()/img[@title='Modify'][i]

donc, c'est de revenir à la i-ième nœud sous le même nœud parent.

Vous voulez

/descendant-or-self::img[@title='Modify'][i]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X