HtmlUnit getByXpath返回null

前端之家收集整理的这篇文章主要介绍了HtmlUnit getByXpath返回null前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Groovy进行编码,但是,我不相信它是一组语言特定的问题.

我其实有两个问题

第一个问题

我在使用HtmlUnit时遇到了一个问题.它告诉我,我想要抓住的是空的.

我正在测试它的页面是:
http://browse.deviantart.com/resources/applications/psbrushes/?order=9&offset=0#/dbwam4

我的代码

client = new WebClient(BrowserVersion.FIREFOX_3)
client.javaScriptEnabled = false

page = client.getPage(url)

//coming up as null
title = page.getByXPath("//html/body/div[4]/div/div[3]/div/div/div/div/div/div/div/div/div/div/h1/a")

println title

这简单地打印出来:[]

这是因为页面使用了onclick()吗?如果是这样,我该如何解决这个问题呢?启用javascript会在我的cmd提示符中创建一个混乱.

第二个问题

我想要获得图像但是遇到了麻烦,因为当我尝试获取XPath(通过firebug)时它显示为:// * [@ id =“gmi-ResViewSizer_img”]

我该如何处理?

解决方法

第一个答案:
/html/body/div[3]/div/div[3]/div/div/div/div/div/div/div/div/div/div/h1/a

你的XPATH在身体的第4个div的谓词过滤器中被一个关闭,它应该是第3个div.看起来该站点的HTML可以/确实从您最初使用Firebug阻止XPATH时发生变化.您可能需要调整XPATH以适应潜在的变化,并对文档结构中的某些差异不太敏感.

也许是这样的:

/html/body//div/h1/a

第二个答案:您列出的XPATH将起作用.它可能看起来奇怪/短(并且可能不是最有效的),但是//从根节点开始并查看树中的每个节点,*匹配任何元素(包括img)和[]谓词过滤器将其限制为具有id属性值等于“gmi-ResViewSizer_img”的id属性.

XPATH还有许多其他选项可以使用.它还取决于HTML结构的变化频率.这个也适用于引用以选择img的页面

/html/body/div/div/div/div/img[1]

猜你在找的HTML相关文章