我们可以在 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')
我们可以在 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')