Как получить класс TD в приведенном ниже HTML-коде с помощью Selenium / XPath? - PullRequest
1 голос
/ 03 января 2011

У меня есть следующий HTML-код и код, который я использую для извлечения класса <td>.

<td class='dataValueRead RV2' style=''>Constant</td>

**

driver.findElement(
  By.xpath("//td[contains(normalize-space(.),'Constant')]")
).getAttribute("class")

Это дает мне пустое значение в качестве вывода. Какие-нибудь подсказки, где я иду не так?

Ответы [ 2 ]

3 голосов
/ 03 января 2011

Просто используйте :

//td[contains(normalize-space(.),'Constant')]/@class

Обратите внимание , что вышеприведенное выражение может выбрать более одного узла.

Чтобы выбрать только N-й узел из этих , используйте выражение XPath такого типа (для N = 1):

   (//td[contains(normalize-space(.),'Constant')]/@class)[1]

Еслини один из них не выбирает ни одного узла, причина может быть :

  1. //td[contains(normalize-space(.),'Constant')] не выбирает ни одного узла, поскольку нет td, строковое значение которого содержит строку 'Constant'.Вы уверены, что используете точную прописную букву?XPath чувствителен к регистру и 'constant' не равен 'Constant'.

  2. //td[contains(normalize-space(.),'Constant')] не выбирает ни одного узла, поскольку существует пространство имен по умолчанию.В этом случае вам нужно зарегистрировать пространство имен и использовать его префикс в выражении XPath (есть много вопросов и ответов по этому поводу - прочитайте их): //x:td[contains(normalize-space(.),'Constant')]

0 голосов
/ 03 января 2011

Почему бы просто не использовать XPath для прямого доступа к атрибуту (td/@class)?

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