2016-12-13 36 views
2

Ich habe so etwas wie dies (mit viel mehr Elemente in root):Wie komme ich mit XPath nach Position?

<root> 
<a> 
    <b></b> 
</a> 
<a> 
    <b></b> 
</a> 
</root> 

Ich mag würde i die b Knoten an der Position zu finden. Was ich versucht ist so etwas wie:

findElement(By.xpath("root//b[" + i + "]")); 

Aber diese Methode zu finden Knoten durch Position mit // vor nicht zu funktionieren scheint. Wie kann ich meinen Knoten finden?

Antwort

3

Man beachte den Unterschied zwischen:

  • //b[1], die alle b Elemente auswählt, die unter b Element Geschwister sind, weil zuerst [1] fester bindet als //.
  • (//b)[1], die das erste b Element unter allen b Elemente im Dokument auswählt.

Also, wenn Sie die ithb Element im Dokument möchten, verwenden Sie

findElement(By.xpath("(//b)[" + i + "]")); 

können Sie, natürlich, durch den Anwendungsbereich auf Teile des Dokumentes begrenzen vor dem b Schritt mit andere Schritte höher in der Hierarchie.