xpath ближайший элемент к данному элементу - PullRequest
10 голосов
/ 06 января 2011

У меня проблемы с возвратом элемента с использованием xpath. Мне нужно получить текст из 2-го ТД из большой таблицы.

<tr> 
 <td> 
  <label for="PropertyA">Some text here </label>
 </td>
 <td> TEXT!! </td>
</tr>

Я могу найти элемент label, но у меня возникают проблемы с выбором родственного TD для возврата текста.

Вот как я выбираю метку:

"//label[@for='PropertyA']"

спасибо

Ответы [ 3 ]

19 голосов
/ 06 января 2011

Вы ищете оси following-sibling.Он ищет в братьях и сестрах одного и того же родителя - там это tr.Если td не совпадают с tr, то они не найдены.Если хочешь, то можешь использовать топоры following.

//td[label[@for='PropertyA']]/following-sibling::td[1]
8 голосов
/ 06 января 2011

Из элемента label должно быть:

//label[@for='PropertyA']/following::td[1]

А затем используйте метод DOM из языка хостинга, чтобы получить строковое значение.

Или выберите текстовый узел (что-то, что я не рекомендую) с помощью:

//label[@for='PropertyA']/following::td[1]/text()

Или, если будет только этот единственный узел, вы можете использовать функцию string():

string(//label[@for='PropertyA']/following::td[1])

Вы также можете выбрать из общего предка tr, например:

//tr[td/label/@for='PropertyA']/td[2]
0 голосов
/ 26 сентября 2015

Получение ЛЮБОГО следующего элемента:

// тд [метка [@ для = 'PropertyA']] / следующего-собрата :: *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...