从XPATH后代值获取父节点

ola*_*lan 5 xml selenium xpath

我有一个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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

//*[@class="item-wrapper"][./*[@id="title"][text()="test-title"]] 
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Aru*_*hit 9

您可以使用以下XPATH:

 //*[@id="title"]/ancestor::*[@id="item_1"][1]
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用该功能 Function: node-set id(object)

 id('title')//ancestor::*[@id="item_1"][1]
Run Code Online (Sandbox Code Playgroud)

更新

 //*[.="test-title"]/ancestor::*[@class="item-wrapper"][1]
Run Code Online (Sandbox Code Playgroud)

产量

<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>
Run Code Online (Sandbox Code Playgroud)