我们可以在 xpath 值中使用正则表达式吗?

Can we using regular expression in xpath value?

我们可以在 xpath 值中使用正则表达式吗?我正在使用 xpath 值来识别网络上的元素以实现自动化。

我有以下 :xpath 值。

:xpath,'//*[@id="ngdialog4"]/div[2]/div[2]/table/tbody/tr/td[1]/input'

但是,最后一位数字 4 ngdialog4 不是常数,每次我都在不断变化 打开弹出窗口...我可以使用一些正则表达式来匹配任何数字吗?

使用 XPath 2.0 :

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

理论上你可以使用 matches(),但它是 a part of xpath 2.0,webdriver 不支持,请在此处查看详细说明:

  • Is string matches() supported in Selenium Webdriver 2?

改为应用 starts-with() 检查:

//*[starts-with(@id, "ngdialog")]

由于您使用的是 Watir,因此您还可以使用正则表达式来查找 ngdialog 元素。然后可以将 XPath 用于路径的其他部分(注意以 ./ 开头的 XPath 用于告诉 Watir 在 ngdialog 中查找):

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