这是我最好的尝试:
HtmlUnorderedList unorderedList = (HtmlUnorderedList) page.getFirstByXPath("//ul[@id='inbox-message-list-messages']");但是,getFirstByXpath返回null。我今天刚刚学习了xpath的使用,所以我确信我遗漏了一些基本的东西。

发布于 2015-10-02 13:08:24
一旦我们有了对HtmlPage的引用,我们就可以使用get方法或XPath来搜索特定的HtmlElement。查看以下按ID查找div、按名称获取锚点的示例:
@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:
@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);
}
}发布于 2015-10-02 14:50:07
我要补充的是,你将实际的Chrome结果与HtmlUnit进行比较,这可能会有所不同。
首先,您需要确保使用Chrome模拟进行构造:
try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
}然后,您应该可以通过打印以下命令来查看HtmlUnit看到的内容:
System.out.println(page.asXml());然后查看这些元素,并按照akhil的提示相应地使用XPath。
https://stackoverflow.com/questions/32900666
复制相似问题