XPath选择以下兄弟

时间:2014-04-11 20:16:15

标签: selenium xpath

这是我目前的代码:

<div>
<ul class="nav nav-pills nav-stacked">
<li>
<li>
<li>
<li>
<li>
<section>
<span name="merchant">ABZ</span>
</section>
<section>
<span class="glyphicon glyphicon-pencil" name="edit"></span>
<span class="glyphicon glyphicon-remove" name="delete"></span>
</section>
</li>
<li>
<li>
<li>
<li>
</ul>
<div class="add-item bottom" name="new-merchant">
</div>

我尝试了以下内容:

xpath=//span[contains(.,'ABZ')]/following-sibling::section/span[@name='edit']
xpath=//span[contains(.,'ABZ')]/following-sibling::span[1]

我正在使用selenium,我想让它点击ABZ span之后的编辑按钮。

2 个答案:

答案 0 :(得分:26)

这个xpath在我的Chrome中使用你的html:

//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']

修改

..意味着升级。 ..将选择器从span转移到section。然后following-sibling在您匹配的section的父section之后找到span

您的原始选择器与span匹配,然后寻找following-siblingspan

答案 1 :(得分:1)

添加上面的答案,下面的表达式都可以正常使用。

//span[contains(text(), 'ABZ')]/following::section/span[@name='edit']

OR

//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']

值得注意的是,跟随轴将选择跟随上下文节点的每个节点,而轴跟随兄弟将仅选择兄弟节点到上下文节点。