page.getByXPath("//*[@href='http://www.example.com/index.do/abc/1_*'");
我是否需要逃避任何角色?
我正在尝试获取页面上具有以下模式的所有ahref链接:
http://www.example.com/index.do/abc/1_
所以这些都应该被检索出来:
http://www.example.com/index.do/abc/1_asdf-asdfasdf
http://www.example.com/index.do/abc/1_223
http://www.example.com/index.do/abc/1_as.php
http://www.example.com/index.do/abc/1_2222233
答案 0 :(得分:4)
XPath中没有通配符。你需要这样的东西:
page.getByXPath("//*[contains(@href,'http://www.example.com/index.do/abc/1_')]");
这取决于the contains
function。您还可以使用starts-with
功能:
//*[starts-with(@href,'http://www.example.com/index.do/abc/1_')]
答案 1 :(得分:0)
如果您使用的是XPath 1.0,则不能以这种方式进行通配符(或正则表达式)匹配。 (升级到2.0可能允许)
对于这种情况,我建议对前缀
进行'包含'测试// a [contains(@ href,'http://www.example.com/index.do/abc/1_')]
(注意,我将选择仅限于标签)
答案 2 :(得分:0)
查看您的XPath库是否支持starts-with(string1,string2)
并使用:
page.getByXPath("//*[starts-with(@href, 'http://www.example.com/index.do/abc/1_')");
另外,你不能用*
替换a
吗?