2014-12-08 4 views
0

HTML, есть ссылка, как показано ниже:XPath-выбор ссылку на текст

<a class="alk" href="https://www.xyz.com/view?id=20221">my_color ⁄ color</a> 

Я могу выбрать его как:

//a[@class='alk'] 

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

//a[@class='alk'][text()='my_color ⁄ color'] 

Второй селектор не возвращает мне ничего. Интересно, что селектор // a [@ class = 'alk']/text() действительно возвращает my_color/color. Я очень озадачен тем, что может отсутствовать в селекторе выше, когда вы пытаетесь выбрать точный текст().

ответ

0

Если вы хотите, чтобы выбрать все ссылки, вы можете настроить XPath для

//a[@class='alk'][text()='my_color ⁄ color'] 

Результат:

<a class="alk" href="https://www.xyz.com/view?id=20221">my_color ⁄ color</a> 

текст не является атрибутом, поэтому @ не требуется.

+0

К сожалению, у меня была опечатка выше. Починил это. Он не работает только с текстом(). – naspras

+0

@naspras Не против опечатки. Это странно, я проверил его, прежде чем я разместил его на www.freeformatter.com/xpath-tester.html и там он работает. Есть ли какие-либо пробелы до/после текста ссылки? Если это так, это можно было бы исправить с помощью 'normalize-space (text())' вместо просто 'text()'. Если нет, тогда было бы хорошо знать, в какой настройке XPath не работает. –

+0

Спасибо! Я попробовал его с фактическим URL-адресом в www.freeformatter.com/xpath-tester.html, и я получил ошибку синтаксического анализа в href. Правило href верное, но почему-то парсер xpath не может его решить. Я считаю, что есть что-то нестандартное, что вызывает его. Я закрою вопрос, так как я не могу поделиться фактическим URL. – naspras

0

Найдено решение. FirePath не может решить xpath, но он отлично работает с приложением. Я считаю, что что-то не так с парсером FirePath xpath, который иногда не может решить «действительное» выражение xpath как это.

Смежные вопросы