问题
I am trying to find an input element with dynamic id name always ending with \"register\". So far I tried this
\"//input[@id[ends-with(.,\'register\')]]\"
and this
\"//input[ends-with(@id,\'register\')]\"
none of these result in an element. What am I doing wrong? At the same time this works:
\"//input[@id[contains(.,\'register\')]]\"
Here\'s the part of source:
<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>
回答1:
The ends-with
function is part of xpath 2.0 but browsers (you indicate you're testing with chrome) generally only support 1.0. So you'll have to implement it yourself with a combination of string-length
, substring
and equals
substring(@id, string-length(@id) - string-length('register') +1) = 'register'
来源:https://stackoverflow.com/questions/22436789/xpath-ends-with-does-not-work