这是我目前的代码:
<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
之后的编辑按钮。
答案 0 :(得分:26)
这个xpath在我的Chrome中使用你的html:
//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']
修改强>
..
意味着升级。 ..
将选择器从span
转移到section
。然后following-sibling
在您匹配的section
的父section
之后找到span
。
您的原始选择器与span
匹配,然后寻找following-sibling
到span
。
答案 1 :(得分:1)
添加上面的答案,下面的表达式都可以正常使用。
//span[contains(text(), 'ABZ')]/following::section/span[@name='edit']
OR
//span[contains(text(), 'ABZ')]/../following-sibling::section/span[@name='edit']
值得注意的是,跟随轴将选择跟随上下文节点的每个节点,而轴跟随兄弟将仅选择兄弟节点到上下文节点。