Xpath“ends-with”不起作用

时间:2014-03-16 12:24:30

标签: xpath ends-with

我正在尝试找到一个动态ID名称始终以" register"结尾的输入元素。到目前为止我试过这个

"//input[@id[ends-with(.,'register')]]"

和这个

"//input[ends-with(@id,'register')]"

这些都不会导致元素。我究竟做错了什么?同时这也有效:

"//input[@id[contains(.,'register')]]"

这是来源的一部分:

<td class="input">
<input id="m.f0.menu.f2.volumeTabs.BLOCK_COMMON.tcw.form.register" name="m.f0.menu.f2.volumeTabs.BLOCK_COMMON.tcw.form.register" class="aranea-checkbox" type="checkbox"> </td>

2 个答案:

答案 0 :(得分:87)

ends-with函数是xpath 2.0的一部分,但浏览器(表明你正在使用chrome进行测试)通常只支持1.0。因此,您必须自己使用string-lengthsubstring和等于

的组合来实现它
substring(@id, string-length(@id) - string-length('register') +1) = 'register'

答案 1 :(得分:0)

Ian Roberts 接受的答案在他的解决方案中使用了 @id attribute 两次。

在这种情况下,我更喜欢将谓词放在 @id 上,如下所示:

//input[@id[substring(.,string-length(.) - string-length('register') + 1) = 'register']]