我想计算 XPath 表达式relative对给定的
元素。
我一直在这里阅读:http://www.w3schools.com/xpath/default.asp http://www.w3schools.com/xpath/default.asp
看起来下面的语法之一应该可以工作(特别是没有前导
斜线或后代:)
然而,似乎没有一个在 HTMLUnit 中工作。非常感谢任何帮助(哦
顺便说一句,这是一个很棒的脚本)。谢谢你!
http://htmlunit.sourceforge.net/ http://htmlunit.sourceforge.net/
http://groovy.codehaus.org/ http://groovy.codehaus.org/
Misha
#!/usr/bin/env groovy
import com.gargoylesoftware.htmlunit.WebClient
def html="""
<html><head><title>Test</title></head>
<body>
<div class='levelone'>
<div class='leveltwo'>
<div class='levelthree' />
</div>
<div class='leveltwo'>
<div class='levelthree' />
<div class='levelthree' />
</div>
</div>
</body>
</html>
"""
def f=new File('/tmp/test.html')
if (f.exists()) {
f.delete()
}
def fos=new FileOutputStream(f)
fos<<html
def webClient=new WebClient()
def page=webClient.getPage('file:///tmp/test.html')
def element=page.getByXPath("//div[@class='levelone']")
assert element.size()==1
element=page.getByXPath("div[@class='levelone']")
assert element.size()==0
element=page.getByXPath("/div[@class='levelone']")
assert element.size()==0
element=page.getByXPath("descendant:div[@class='levelone']") // this
gives namespace error
assert element.size()==0
谢谢你!!!
从问题的定义来看,并不清楚 XPath 表达式的计算相对于什么元素。假设这是文档节点,则以下 XPath 表达式将选择所需的节点:
*/*/div[@class='levelone']
html/body/div[@class='levelone']
descendant::div[@class='levelone']
如果在实际的 XML 文档(未显示)中存在默认命名空间,您可能会遇到问题。在这种情况下,您需要在 XPath 托管语言(我不知道 groovy)中定义/注册此名称空间并使用关联的前缀,如下所示:
*/*/x:div[@class='levelone']
x:html/x:body/x:div[@class='levelone']
descendant::x:div[@class='levelone']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)