Xpath"ends-with"不起作用

cas*_*per 46 xpath ends-with

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

"//input[@id[ends-with(.,'register')]]"
Run Code Online (Sandbox Code Playgroud)

还有这个

"//input[ends-with(@id,'register')]"
Run Code Online (Sandbox Code Playgroud)

这些都不会导致元素.我究竟做错了什么?同时这工作:

"//input[@id[contains(.,'register')]]"
Run Code Online (Sandbox Code Playgroud)

这是源的一部分:

<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>
Run Code Online (Sandbox Code Playgroud)

Ian*_*rts 95

ends-with函数是xpath 2.0的一部分,但浏览器(您表明您使用chrome进行测试)通常只支持1.0.所以你必须给自己用的组合实现它string-length,substring并且等于

substring(@id, string-length(@id) - string-length('register') +1) = 'register'
Run Code Online (Sandbox Code Playgroud)


Sie*_*oed 6

伊恩·罗伯茨接受的答案@id attribute在他的解决方案中使用了两次。

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

//input[@id[substring(.,string-length(.) - string-length('register') + 1) = 'register']]
Run Code Online (Sandbox Code Playgroud)