Ich habe eine HTML-Seite den folgenden Code enthält:Selen, Java. Benötigen Sie Vorfahren Element in Tabelle auszuwählen von XPath
<table class="report" style="width:100%">
<tbody>
<tr>
<th/>
<th>Position Open
<br>
<span class="timestamp">27/7/2016 16:12:12</span>
</br>
</th>
<th>Position closed
<br>
<span class="timestamp">27/7/2016 16:12:42</span>
</br>
</th>
</tr>
<tr>
<td>
<span dir="ltr">EURJPY</span>
</td>
<td>116.098</td>
<td>116.156</td>
</tr>
</tbody>
</table>
Auf dieser Seite habe ich eine andere Tabelle mit demselben Klassenattribut „report“, aber nur dieser Tabelle Texte enthält " Position offen "und" Position geschlossen ". Ich muss Elemente auswählen, die die Daten "EURJPY", "116.098" und "116.156" enthalten. Diese Elemente Inhalt wird das heißt anstelle von „EURJPY“ Ändern erscheinen „EURUSD“ oder „GBPCAD“ usw. Ich habe versucht, den folgenden Code:
driver.findElement(By.xpath("//span[text()='Position Open']/ancestor::table[@class='report'](//tr)[2]/td/span")).getAttribute("textContent");
das erste Pflichtfeld Text zu bekommen, aber bekam die Invalid selector
Fehler.
Ich denke, Sie shold versuchen, Klammern in '(// tr)' – Andersson
zu entfernen Ihr Xpath und die Logik für Ihre Anforderungen ist klar. Meinst du "Position offen" * ODER * "Position geschlossen"? Ihr Versuch testet nur nach Position Open. Sie sagen auch, dass Sie Elemente auswählen möchten, aber das FindElement() wählt nur ein einzelnes Element aus, und Ihr Beispiel schlägt vor, dass Sie nur den in der Spanne enthaltenen Text möchten. –