2009-05-31 10 views
1

J'écris le test au sélénium.Interroger le tag html avec XPath

J'ai ici une étiquette "Assign Designer" et la case de sélection est juste après l'étiquette. Malheureusement, la boîte de sélection a l'ID dynamique et je ne peux pas l'interroger par id ou tout autre son attribut. Puis-je créer la requête XPath qui renvoie «Première balise de sélection après le texte 'Assign Designer'»?

PS. Sélénium ne supporte que XPath 1.0

Répondre

3

Ce serait quelque chose comme:

//label[text() = 'Assign Designer']/following-sibling::select[1] 

Notez que:

  • // Le raccourci est tout à fait inefficace, car il provoque une analyse de documents à l'échelle. Si vous pouvez être plus précis sur la position de l'étiquette, je recommande de le faire. Si le document est petit, cependant, ce ne sera pas un problème.
  • Comme je ne connais pas grand chose sur le sélénium, j'ai utilisé "label". Si ce n'est pas un <label>, vous devez utiliser le nom de l'élément réel, bien sûr. ;-)
  • Veillez à inclure un prédicat de position ([1], dans ce cas) chaque fois que vous utilisez un axe du type "following-sibling". C'est facilement oublié et si c'est le cas, vos expressions peuvent produire des résultats inattendus.
+0

Est-ce que 'following-sibling' est supporté par la spécification XPath 1.0? –

+1

Quelle étrange question ... Avez-vous essayé de le chercher? http://www.w3.org/TR/xpath#axes – Tomalak

Questions connexes