Использование XPath:найдите ссылку в ячейке на 3 строки выше
Вопрос
У меня есть несколько строк в таблице, в одной из которых есть ссылка, по которой я хотел бы автоматически щелкнуть.Для моей отправной точки у меня есть последний экземпляр, в котором строка содержит текст "Тестовый вопрос?".:
ID:1416
Редактировать / Утверждать Игнорировать Электронная почта Имя:Имя Отправителя
Открыть N/A Расположение:Местоположение Отправителя
Участник:НЕТ
Текст вопроса:Тестовый вопрос?Ответ 1 Текст:
Текст ответа 2:
ID:1417
Редактировать / Утверждать Игнорировать Электронная почта Имя:Имя Отправителя
Открыть N/A Расположение:Местоположение Отправителя
Участник:НЕТ
Текст вопроса:Тестовый вопрос?Ответ 1 Текст:
Текст ответа 2:
Итак, //tr[td='Тестовый вопрос?'][last()] будет что-то вроде "Текст вопроса:Тестовый вопрос?"
Во всяком случае, через три ряда от этого есть строка с кучей ссылок в ней.Я хотел бы получить xpath для ссылки в первой ячейке.
Теперь я попытался использовать position(), но такие вещи, как //tr[position()=(//tr[td='Тестовый вопрос?'][last()][position()])-3] просто неправильный способ сделать это, и я не могу найти хороших примеров.
Спасибо
Дэйв
Решение
Это будет, мягко говоря, довольно корявый xpath, но вы смотрите на оси начиная с ancestor::tr
а затем брат-предшественник.Туннель до <tr>
, затем через три (вам нужно будет указать position()
вот я думаю), а затем обычным способом спуститесь оттуда к своей цели.
Редактировать:проще, чем я думал, предыдущий брат отсчитывается в обратном направлении.
./ancestor::tr/preceding-sibling::tr[3]/td[1]/a