首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HtmlUnit中getByXpath的基本用法

HtmlUnit中getByXpath的基本用法
EN

Stack Overflow用户
提问于 2015-10-02 12:42:07
回答 2查看 7.2K关注 0票数 3

这是我最好的尝试:

代码语言:javascript
复制
HtmlUnorderedList unorderedList = (HtmlUnorderedList) page.getFirstByXPath("//ul[@id='inbox-message-list-messages']");

但是,getFirstByXpath返回null。我今天刚刚学习了xpath的使用,所以我确信我遗漏了一些基本的东西。

EN

回答 2

Stack Overflow用户

发布于 2015-10-02 13:08:24

一旦我们有了对HtmlPage的引用,我们就可以使用get方法或XPath来搜索特定的HtmlElement。查看以下按ID查找div、按名称获取锚点的示例:

代码语言:javascript
复制
@Test
public void getElements() throws Exception {
    try (final WebClient webClient = new WebClient()) {
        final HtmlPage page = webClient.getPage("http://some_url");
        final HtmlDivision div = page.getHtmlElementById("some_div_id");
        final HtmlAnchor anchor = page.getAnchorByName("anchor_name");
    }
}

对于更复杂的搜索(tutorial),建议使用XPath

代码语言:javascript
复制
@Test
public void xpath() throws Exception {
    try (final WebClient webClient = new WebClient()) {
        final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");

        //get list of all divs
        final List<?> divs = page.getByXPath("//div");

        //get div which has a 'name' attribute of 'John'
        final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-10-02 14:50:07

我要补充的是,你将实际的Chrome结果与HtmlUnit进行比较,这可能会有所不同。

首先,您需要确保使用Chrome模拟进行构造:

代码语言:javascript
复制
try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
}

然后,您应该可以通过打印以下命令来查看HtmlUnit看到的内容:

代码语言:javascript
复制
System.out.println(page.asXml());

然后查看这些元素,并按照akhil的提示相应地使用XPath

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32900666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档