HtmlUnit单击元素后无法获取页面更改

时间:2019-02-10 01:18:46

标签: javascript java web-scraping htmlunit

我目前正在尝试使用HtmlUnit从https://www.overbuff.com/heroes抓取一些信息,但是单击所选元素后,我无法真正更改页面。我试图单击排名框中的元素[全部,青铜,银...],以便可以更改页面上的信息并获取该特定排名的信息,但是单击页面后保持不变。我已经尝试了多种方法来查找所需的特定元素,但每次都找不到问题,但是单击永远不会更新页面。

public static void testPageGrab() throws Exception {
    WebClient client = new WebClient(BrowserVersion.FIREFOX_60);
    client.getOptions().setJavaScriptEnabled(true);
    client.getOptions().setThrowExceptionOnScriptError(false);
    client.getOptions().setThrowExceptionOnFailingStatusCode(false);
    HtmlPage page = client.getPage("https://www.overbuff.com/heroes");
    DomNodeList<DomNode> nodes = page.querySelectorAll("span.r-none-mobile");
    HtmlPage page2 = ((HtmlElement) nodes.get(0)).click();
    client.waitForBackgroundJavaScript(5000);
    System.out.println(page2.asText());
}

从node.get(0)返回的元素是“铜牌”类别的元素,但是从page2打印的文本与从使用“ All”类别的page1相同。有谁知道为什么页面拒绝更新?我看过其他似乎有类似问题的线程,但是对他们有用的解决方案(例如,等待javascript)对我来说不起作用。一个线程讨论了AJAX请求并使用了FancyAjaxController,但这对我没有任何影响。

1 个答案:

答案 0 :(得分:0)

我担心这是因为JavaScript在网站更新之前失败。

com.gargoylesoftware.htmlunit.ScriptException:TypeError:重新声明形式参数t。 (https://www.overbuff.com/assets/static/app.js?v=8f65c97#1

这个已经在Rhino中要修复的列表中-但是修复起来并不那么简单。