Выбор текстовой части HTML-тега ‹a href› через XPATH

Рассмотрим следующее:

<span>
    <li>
        <a href="javascript:__doPostBack('Send', 'ShowPackageDetails');"> Recall </a>
    </li>
</span>

Я хотел бы получить XPath к этому элементу через текстовое значение «Отозвать».

Я знаю, что также могу выбрать его, используя:

//a[contains(@href, 'ShowPackageDetails')]

Но другие элементы на странице также содержат ту же строку в своем атрибуте href. В этом случае я бы предпочел выбирать на основе фактического текста, а не его атрибута, потому что я знаю, что он уникален, и мне не придется прибегать к использованию индекса.

я пробовал

//a[contains(@value, 'Recall')]

И другие различные комбинации text()='Recall', но я вообще не получаю никаких результатов.


person Michael Bautista    schedule 08.02.2012    source источник
comment
Это HTML, а не XML. Попробуйте вместо этого использовать jQuery.   -  person Diodeus - James MacFarlane    schedule 08.02.2012
comment
Он мог использовать пакет HTMLAgility или что-то в этом роде.   -  person Jason    schedule 08.02.2012


Ответы (3)


@ для выбора атрибутов. Вместо этого используйте следующее:

//a[contains(., 'Recall')]
person Wayne    schedule 08.02.2012

Попробуй это:

HTML

<span>
    <li>
        <a href="javascript:__doPostBack('Send', 'ShowPackageDetails');">Recall</a>
    </li>
</span>

XPath

//a[text()="Recall"]

Это может иметь какое-то отношение к тексту «Вспомнить», а не «Вспомнить». Я удалил пробелы в вашей разметке.

person Jason    schedule 08.02.2012
comment
Хорошо поймал! Я включил пробелы в XPath, и все было в порядке. Но я думаю, что в этом случае я буду использовать решение, предоставленное @lwburk. Спасибо за помощь. - person Michael Bautista; 08.02.2012