Я разборе веб-страницу, которая включает в себя структуру, как это:XPath: найти ячейку таблицы с одной позиции в другую строку
<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>
Что мне нужно сделать, это выбрать элемент на основе его этикетке, так что мои мысли если метка находится в третьем теге в своей строке, я могу захватить третий тег в следующей строке, чтобы найти элемент. Я не могу найти способ использовать функцию position() таким образом, и, возможно, xpath (1.0) не сможет обработать этот тип фильтрации.
Моя лучшая попытка: //td[ancestor::tr[1]/preceding-sibling::tr[1]/td[position()]]
. Я надеялся, что функция position() захватит позицию <td>
в начале xpath, так как остальная часть xpath является фильтром для этого узла.
Является ли то, что я пытаюсь сделать, даже возможно?
Какую библиотеку/язык программирования вы используете для выполнения своих XPaths? Я не думаю, что это можно сделать в чистом XPath 1.0, вам нужно будет хранить 'position()' из внешнего контекста в переменной, а затем использовать эту переменную внутри предиката, а также то, как вы устанавливаете переменные, варьируется от инструмента к инструменту. –
Я использую selenium webdriver. – eldon111
Какие языковые привязки selenium-webdriver вы используете? Вероятнее всего, проще использовать различные методы селена, а не чистое решение xpath. –