使用XPath选择具有更改Id字符串的元素

时间:2011-12-18 18:39:22

标签: xpath

我有一个带有Id的textarea控件,如下所示:

<textarea id="NewTextArea~~51887~~1" rows="2"/>

以前工作的xpath已经

//textarea[@id, "NewTextArea~~51887~~1"]

但是现在id的'51887'部分变得多样化(每次都在变化)所以我需要选择NewtextArea ~~ * ~~ 1元素而不实际指定数字。有没有办法我可以将字符串的一部分通配符,以便它匹配特定的模式?我尝试使用starts-with和ends-with但无法使其工作:

//textarea[starts-with(@id, 'NewTextArea~~') and ends-with(@name, '~~1')]

请记住,还有其他字段与最后的数字不同。

非常感谢任何建议或指导:)

1 个答案:

答案 0 :(得分:1)

  

我尝试使用start-with和ends-with但无法使其工作:

//textarea[starts-with(@id, 'NewTextArea~~') and ends-with(@name, '~~1')]

ends-with()仅在XPath 2.0中作为标准函数提供,您似乎使用XPath 1.0

使用

//textarea
   [starts-with(@id, 'NewTextArea~~')
  and
   substring(@id, string-length(@id) - 2) = '~~1'
   ]

<强>解释

有关如何在XPath 1.0中实现ends-with()的信息,请参阅此问题的答案:

<强> https://stackoverflow.com/a/405507/36305