ich eine Webseite bin Parsen, die eine Struktur wie folgt enthält:XPath: Tabellenzelle mit dem gleichen Position in verschiedenen Reihen finden
<tr>
<td>Label 1</td>
<td>Label 2</td>
<td>Label 3</td>
<td>Something else</td>
<\tr>
<tr>
<td>Item 1</td>
<td>Item 2</td>
<td>Item 3</td>
<\tr>
Was ich tun müssen, um ein Element auszuwählen basierend auf ihrem Label, so meinen Gedanken Ist das Label im dritten Tag in der Zeile, kann ich das dritte Tag in der nächsten Zeile auswählen, um das Element zu finden. Ich kann keine Möglichkeit finden, die Funktion position() auf diese Weise zu verwenden, und vielleicht kann xpath (1.0) diese Art der Filterung nicht verarbeiten.
Mein bisher bester Versuch ist: //td[ancestor::tr[1]/preceding-sibling::tr[1]/td[position()]]
. Ich hatte gehofft, dass die position() - Funktion die Position des <td>
am Anfang des xpaths einnimmt, da der Rest des xpath ein Filter für diesen Knoten ist.
Ist was ich versuche zu tun, sogar möglich?
Welche Bibliothek/Programmiersprache verwenden Sie zur Ausführung Ihrer XPaths? Ich glaube nicht, dass dies in reinem XPath 1.0 möglich ist, Sie müssten das 'position()' aus dem äußeren Kontext in einer Variablen speichern und dann diese Variable innerhalb des Prädikats verwenden, und wie Sie Variablen setzen, variiert von Werkzeug zu Werkzeug. –
Ich verwende Selen-Webdriver. – eldon111
Welche Selen-Webdriver-Sprachbindungen verwenden Sie? Es ist wahrscheinlich einfacher, verschiedene Selenmethoden anstelle einer reinen Xpath-Lösung zu verwenden. –