我目前正在尝试使用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,但这对我没有任何影响。
答案 0 :(得分:0)
我担心这是因为JavaScript在网站更新之前失败。
com.gargoylesoftware.htmlunit.ScriptException:TypeError:重新声明形式参数t。 (https://www.overbuff.com/assets/static/app.js?v=8f65c97#1)
这个已经在Rhino中要修复的列表中-但是修复起来并不那么简单。