我想使用下面的正则匹配以下文本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));