这个xpath看起来是否正确?

时间:2010-01-05 20:03:40

标签: java xpath htmlunit

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

3 个答案:

答案 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吗?