我使用以下XPath来定位我的元素:
//tbody/*[contains(.,'abcabc')]/following-sibling::div[1]/a[@class="editbtn"]
到目前为止, //tbody/*[contains(.,'abcabc')]
取出了我的元素。
然而,当我在那之后使用/following-sibling::div[1]/a[@class="editbtn"]
时,
甚至/following-sibling::div[1]
,我得到:
无法找到元素:
我的HTML看起来像:
<tbody>
<tr>
<td>
<div>
<a href="#!/service/1/policies" data-id="1">abcabc</a>
<div class="pull-right">
<a class="editbtn" title="Edit" href="href1" data-id="1">
<i class="icon-edit"/>
</a>
<a class="deletebtn" title="Delete" href="javascript:void(0);" data-id="1">
<i class="icon-trash"/>
</a>
</div>
</div>
</td>
</tr>
</tbody>
答案 0 :(得分:0)
当您查找//tbody/*[contains(.,'abcabc')]
时,您没有选择您认为自己选择的内容。
您认为您正在选择包含'abcabc'的a
元素,但您实际上是在选择tbody
本身,因为其字符串值也包含'abcabc'。 tbody
元素没有以下兄弟姐妹,所以你什么也得不到。
要选择示例中div
之后的a
,请指定//a
,而不是使用*
来匹配任何元素:
//tbody//a[contains(.,'abcabc')]/following-sibling::div[1]
这将解决您的following-sibling
问题,并选择class="pull-right"
div
元素后面的abcabc
a
。