1
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
4

3 回答 3

4

XPath 中没有通配符。你想要这样的东西:

page.getByXPath("//*[contains(@href,'http://www.example.com/index.do/abc/1_')]");

这依赖contains函数。您还可以使用以下starts-with功能:

//*[starts-with(@href,'http://www.example.com/index.do/abc/1_')]
于 2010-01-05T20:08:58.930 回答
0

如果您使用的是 XPath 1.0,则不能以这种方式进行通配符(或正则表达式)匹配。(升级到 2.0 可能会允许)

对于这种情况,我建议对前缀进行“包含”测试

//a[包含(@href,' http://www.example.com/index.do/abc/1_ ')]

(注意,我将选择限制为一个标签)

于 2010-01-05T20:11:36.600 回答
0

查看您的 XPath 库是否支持starts-with(string1,string2)并使用:

page.getByXPath("//*[starts-with(@href, 'http://www.example.com/index.do/abc/1_')");

另外,你不能用 代替*a

于 2010-01-05T20:11:48.143 回答