选择<;a href>;通过XPATH的HTML标记

本文关键字:XPATH HTML 通过 标记 href lt 选择 gt | 更新日期: 2023-09-27 18:24:00

考虑以下内容:

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

我想通过文本值"Recall"获取该元素的XPath。

我知道我也可以选择它通过使用:

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

但是页面上的其他元素在其href属性中也包含相同的字符串。在这种情况下,我更喜欢根据实际文本而不是其属性进行选择,因为我知道它是唯一的,我不必使用索引。

我试过

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

以及text()='Recall'的其他各种组合,但我根本没有得到任何结果。

选择<;a href>;通过XPATH的HTML标记

@用于选择属性。请使用以下内容:

//a[contains(., 'Recall')]

试试这个:

Html

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

XPath

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

这可能与文本是"回忆"而不是"回忆"有关。我删除了标记中的空格。

如果您试图解析像您提供的示例中那样生成的Html页面,则应该使用Html敏捷包。这是一个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...
 }