我们能在XPath值中使用正则表达式吗?

7
我们可以在xpath值中使用正则表达式吗?我正在使用xpath值来识别Web上的元素进行自动化。
我有以下:xpath值。
:xpath,'//*[@id="ngdialog4"]/div[2]/div[2]/table/tbody/tr/td[1]/input'

然而,最后一个数字4 ngdialog4 不是固定的,每次打开弹出窗口时都会改变... 我能使用正则表达式来匹配任何数字吗?

3个回答

7

如果浏览器有XPath引擎,WebDriver将使用它。如果浏览器的XPath引擎不支持它,WebDriver将不会使用它。如果浏览器没有XPath引擎(通常是IE),那么WebDriver会使用自己的库。因此说“它不支持XPath 2”是完全不正确的。 - Arran

0

使用XPath 2.0:

:xpath,'//*[matches(@id, '^(ngdialog)[0-9]')]/div[2]/div[2]/table/tbody/tr/td[1]/input'

0

由于你正在使用Watir,你也可以使用正则表达式来查找ngdialog元素。XPath可用于路径的其他部分(请注意,XPath的起始位置为./,用于告诉Watir在ngdialog内查找):

browser.element(:id => /ngdialog/).checkbox(:xpath => './div[2]/div[2]/table/tbody/tr/td[1]/input')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接