如何在 XPath "contains"函数中使用正则表达式



我想使用下面的正则匹配以下文本sometext12345_text

我在我的硒测试之一中使用了它。

String expr = "//*[contains(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));

它似乎不起作用。有人可以帮忙吗?

//*[starts-with(@id, 'sometext') and ends-with(@id, '_text')]

(如Paul T所指出的那样,//*[boolean(number(substring-before(substring-after(@id, "sometext"), "_text")))]可以用来执行相同的检查您的原始正则表达式,如果您还需要检查中间数字)

在XPATH 2.0中,尝试

//*[matches(@id, 'sometextd+_text')]

在罗宾斯的答案末端中,也不支持xpath 1.0中。因此,如果您的病情不是很具体。.您可以像这样使用的那样使用

//*[starts-with(@id,'sometext') and contains(@name,'_text')]`

如果您与Firefox一起使用Selenium,则应该能够使用EXSLT扩展名,然后regexp:test()

这个对您有用吗?

String expr = "//*[regexp:test(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));

最新更新