为什么以下兄弟表达式不正确?

时间:2017-10-19 14:17:22

标签: html selenium xpath

对于这种一般结构:

<div class="col-xs-10">
    <input id="This[0].That" name="This[0].That" ng-model="item.That">
</div>
<div class="col-xs-2">
    <input ng-click="removeThat(item)" value="Remove">
</div>

为什么这种特殊语法无效:

//input[@id='This[0].That']/following-sibling::/../input[@value="Remove"]

2 个答案:

答案 0 :(得分:1)

要回答您的直接问题,您会收到XPath语法错误,因为following-sibling::必须后跟一个NCName,例如input

`following-sibling::input`

但请注意,示例HTML中的input元素不是兄弟。

您可以使用input轴,根据第一个选择第二个following::

//input[@id='This[0].That']/following::input[@value="Remove"]

当然,对于小样本,更简单的XPath就足够了:

//input[@value="Remove"]

答案 1 :(得分:0)

只是添加kjhuges所说的,如果你使用第一个输入锚定的背后的推理是因为有多个 //input[@value='Remove']元素,您始终可以使用索引来查找它们或修饰符标记

(//input[@value='Remove'])[index] 

//input[@value='Remove'])[last()]