2016-09-21 6 views
0

Dears,Selen PHP - findElement von XPath, komplexe XPath nicht funktioniert

Ich habe ein Problem mit dem folgenden XPath mit Blick auf die kein Element zurück, wenn $ pos größer als 1

ist

beachten Sie, dass gibt es mehr als 1 div [@ class = "Panel-Überschrift"] in Form [enthält (@action "/ myaction?")]

$this->webdriver->findElement(WebDriverBy::xpath('//form[contains(@action, "/myaction?")]//div[@class="panel-heading"][' . $pos . ']//a[contains(@onclick, "do_something")]'))->click(); 

Jede Idee, was mit meinem xpa falsch th?

Vielen Dank im Voraus, Lionel

+0

XPath scheint den HTML-Schnipsel Form ok.please hinzufügen, wenn possible.Have Sie den XPath ist in der bewährten Browser? – lauda

Antwort

0

Überprüfen Sie, ob Sie nur eine einzige Verbindung mit dieser Aktion haben, nur die Suche nach
//a[contains(@onclick, "do_something")] und sehen Sie, ob Sie die do_something identifizieren, die einzigartig ist.
Vermeiden Sie die Verwendung [number], weil es leicht brechen kann, wenn einer der Aufenthaltsort Divs ist weg.

Wenn Sie Probleme bekommen, wenn $pos größer ist als eins bedeutet, dass die div, die diese Bedingung bekommt, nicht auf dem gleichen Niveau wie alle anderen div ist.

+0

Jedes div [@ class = "panel-heading"] befindet sich auf derselben Ebene in der DOM-Struktur. Und für jeden gibt es nur 1 a [contains (@onclick, "do_something")] unten. – user2166417

0

Sie sollten mit () versuchen, wenn Sie wie unten Index in Ihrem xpath verwenden: -

$this->webdriver->findElement(WebDriverBy::xpath('(//form[contains(@action, "/myaction?")]//div[@class="panel-heading"])[' . $pos . ']//a[contains(@onclick, "do_something")]'))->click();