我们可以在xpath值中使用正则表达式吗?我正在使用xpath值来识别Web上的元素以实现自动化。
我有以下内容:xpath值。
:xpath,'//*[@id="ngdialog4"]/div[2]/div[2]/table/tbody/tr/td[1]/input'
但是,最后一个数字4 ngdialog4
不是常数,每次我都会不断变化
打开弹出窗口...我可以使用一些正则表达式来匹配任何数字吗?
答案 0 :(得分:6)
你理论上可以使用matches()
,但它是a part of xpath 2.0,webdriver不支持,请参阅此处的详细说明:
请改为starts-with()
检查:
//*[starts-with(@id, "ngdialog")]
答案 1 :(得分:0)
使用XPath 2.0:
:xpath,'//*[matches(@id, '^(ngdialog)[0-9]')]/div[2]/div[2]/table/tbody/tr/td[1]/input'
答案 2 :(得分:0)
由于您使用的是Watir,因此您还可以使用正则表达式来查找ngdialog元素。然后可以将XPath用于路径的其他部分(注意,带有./
的XPath的开始用于告诉Watir在ngdialog中查看):
browser.element(:id => /ngdialog/).checkbox(:xpath => './div[2]/div[2]/table/tbody/tr/td[1]/input')