xml - 从 XPATH 后代值获取父节点

标签 xml xpath selenium

我有一个 HTML 结构,我正尝试使用 XPATH 对其进行测试。我目前要查看的结构类似于:

<div id="item_1" class="item-wrapper">
    <div class="container item">

        <div class="container-header">
            <h2 id="title">test-title</h2>
            <h5 id="description">test-description</h5>
        </div>

    </div>
</div>

我的文档中有许多“项目”,每个项目都有一个唯一的 ID。使用 XPATH,我想从 title id 节点(在本例中为“test-title”)的值中“获取”item_1 节点。

我也想以不依赖于节点标记(div/h2/etc)的方式来执行此操作。

我一直在研究谓词,但似乎无法找到有效的解决方案。例如:

//*[@class="item-wrapper"][./*[@id="title"][text()="test-title"]] 

感谢您的帮助!

最佳答案

您可以使用以下 XPATH:

 //*[@id="title"]/ancestor::*[@id="item_1"][1]

或者,您也可以使用函数 Function: node-set id(object)

 id('title')//ancestor::*[@id="item_1"][1]

更新

 //*[.="test-title"]/ancestor::*[@class="item-wrapper"][1]

输出

<div id="item_1" class="item-wrapper">
    <div class="container item">

        <div class="container-header">
            <h2 id="title">test-title</h2>
            <h5 id="description">test-description</h5>
        </div>

    </div>
</div>

关于xml - 从 XPATH 后代值获取父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119093/

相关文章:

c# - XPath:根据另一个节点选择一个节点?

perl - 使用 Test::WWW::Selenium 或其他方式检测操作系统对话框

java - 在带有 Selenium WebDriver 的 Java 中,如何仅在广告显示时使用 JavaScript 单击覆盖广告上的链接?

xml - 使用 F# linq to XML 解析 XML 文件

php - 如何在 PHP 中读取 XSD 日期时间格式?

python - 如何让 Selenium 在单选按钮python上进行随机选择

xml - 如何在xQuery中获取没有 child 的节点?

css - selenium - 如何根据超链接的显示名称选择表中的超链接

c# - 采取什么方法为用户缓存唯一的自动建议列表?

java - ListFragment 更改尺寸