Выбор текстовой части HTML-тега <a href> через XPATH - PullRequest
1 голос
/ 08 февраля 2012

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

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

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

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

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

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

Я пробовал

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

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

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Если вы попытаетесь проанализировать HTML-страницу, которая была сгенерирована, как в приведенном вами примере, вы должны использовать Html Agility Pack .Это решение C # (как я вижу в теге вашего вопроса.

 HtmlDocument doc = new HtmlDocument();
 doc.Load("yourFile.html");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    //Check the text and do what you want...
 }
1 голос
/ 08 февраля 2012

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

//a[contains(., 'Recall')]
1 голос
/ 08 февраля 2012

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

Html

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

XPath

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

Возможно, это связано с тем, что текст "Напомним", а не "Напомним",Я удалил пробелы в вашей разметке.

...