2016-03-15 3 views

Antwort

8

Doppelstrich // jeden Nachkommen Knoten des aktuellen Knotens in dem HTML-Baum, der den Locator feets.

Ein einziger Schrägstrich / bedeutet Knoten, der ein direktes Kind des Stroms ist.

//div[@id='add']//span[@id=addone'] wird

<div id="add"> 
    <div> 
    <span id="addone"> 
    </div> 
</div> 

Und

<div id="add"> 
    <span id="addone"> 
</div> 

//div[@id='add']/span[@id=addone'] machen nur den zweiten HTML-Baum macht.

2

Wenn Sie dies haben.

<div id='add'> 
    <ul> 
     <li> 
     <span id='add one' /> 
     </li> 
    </ul> 
</div> 

Dann //div[@id='add']//span[@id='addone'] wird in der Spanne zur Folge haben, da die zweiten // bedeutet, dass Sie für jedes Kind in Bezug auf div[@id='add'] suchen, die span[@id='add one'] ist.

Wenn Sie einen Schrägstrich //div[@id='add']/span[@id='addone'] verwenden würden, dann würden Sie ihn natürlich nicht finden, denn dann suchen Sie nach einem direkten Kind, und Sie müssten //div[@id='add']/ul/li/span[@id='addone'] verwenden. So ist die zweite // sehr nützlich, um zusätzliche Hierarchie in Ihren XPaths zu vermeiden.

+0

Ich habe noch eine Frage. Auf der Webseite gibt es die Schaltfläche "Suchen". Wenn ich darauf klicke, werden alle Ergebnisse angezeigt. Die Bedingung ist nun, wenn Daten vorhanden sind, dann werden Daten in der Zeile angezeigt, aber wenn Daten nicht vorhanden sind, wird der Text 'Kein Element gefunden' auf der Seite angezeigt. Könnten Sie mir bitte mitteilen, wie ich mit dieser Situation umgehen soll?\t Ich habe versucht, mit Wenn-Else-Bedingung, aber es zeigt Element nicht gefunden Ausnahme. Bitte helfen Sie mir dabei, wie ich Zustandsdaten überprüfen werde, die für bestimmte Elemente nicht gefunden werden. –

+1

Gern geschehen. Bitte [akzeptieren] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) diese Antwort, wenn es geholfen hat, und eine neue Frage bezüglich der neuen Suchschaltflächenabfrage stellen. –

+0

Ich verwende folgende Logik: If (! = (Webelement.xpath (""). IsDisplayed) Element gefunden else ((webelement.xpath (""). IsDisplayed) Element nicht gefunden. Hier habe ich if else loop zur Überprüfung verwendet Welches Element ist vorhanden, aber wenn Element nicht in der ersten if-Bedingung vorhanden ist, zeigte es "element not found error" an. Bitte schlagen Sie es vor. –

8

Doppelter Schrägstrich (//) ist die Abkömmling-oder-Selbst-Achse; es ist kurz für /descendant-or-self::node()/.

In Ihrem Beispiel XPath:

//div[@id='add']//span[@id='addone'] 
  • Das erste Mal // erscheint, alle div Elemente im Dokument mit einem id Attributwert gleich 'add' auswählt.
  • Das zweite Mal // erscheint, es wählt alle span Elemente aus, die Abkömmlinge von jedem der div Elemente sind, die zuvor ausgewählt wurden.
  • Beachten Sie, dass die Verwendung von zwei Doppelschlitzen zweimal anders ist als die Verwendung von Doppelstrich einmal. Zum Beispiel würde wählen //span[@id='addone'] allespan Elemente mit @id='addone' im gesamten Dokument, unabhängig davon, ob sie ein Nachkomme eines div mit @id='add' sind.
+0

Ich habe noch eine Frage. Auf der Webseite gibt es die Schaltfläche "Suchen", wenn ich darauf klicke, Wenn die Daten vorhanden sind, werden die Daten in der Zeile angezeigt, aber wenn keine Daten vorhanden sind, wird auf der Seite der Text "Kein Element gefunden" angezeigt. Können Sie mir bitte Bescheid geben? Behandle diese Situation. –

+0

Ich habe tr y mit if -else-Bedingung, aber es zeigt Element nicht gefunden Ausnahme. Bitte helfen Sie mir dabei, wie ich Zustandsdaten überprüfen werde, die für bestimmte Elemente nicht gefunden werden. –

+1

Gern geschehen. Bitte [** accept **] (http://meta.stackoverflow.com/q/5234/234215) diese Antwort, wenn es geholfen hat, und eine neue Frage bezüglich der neuen Suchschaltflächenabfrage stellen. Stellen Sie sicher, dass ein [mcve] enthalten ist, der zeigt, dass Ihr XPath nicht das auswählt, was Sie möchten. Vielen Dank. – kjhughes

Verwandte Themen