JavaHtmlUnitWebClient。getPage不处理javascript
我尝试使用HtmlUnit WebClient。getPage以加载带有javascript的页面。但是加载的页面不处理其中的javascript代码
我试图根据我能找到的所有相关答案在WebClient中添加所有选项。它仍然不起作用
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setUseInsecureSSL(true);
String testUrl = "https://www.coursera.org/browse/data-science";
try {
final HtmlPage page = webClient.getPage(testUrl);
webClient.waitForBackgroundJavaScript(20 * 1000);
System.out.println(page.asXml());
}catch(Exception e) {
e.printStackTrace();
}
webClient.close();
在“https://www.coursera.org/browse/data-science”页面上,我希望看到页面中列出的所有课程。asXml()作为html元素。但它仅将“趋势课程”部分中的课程显示为html元素
# 1 楼答案
从第一眼看,我认为这是因为javascript失败(var t的重复声明)。您可以在日志中看到错误。这在真正的浏览器中不会失败,可能会停止所需的js处理,因此只创建页面的一部分
我已经对这个bug进行了一些分析,并且我能够在一个简单的场景中重现它(如果涉及到这种巨大的js库,这通常是最困难的一步)。将尝试在Rhino中修复此问题,但这需要一些时间
请在https://github.com/HtmlUnit与您的测试用例一起打开一个问题。然后我会负责添加一个问题和建立一个公关。如果你喜欢,你可以添加一个链接到这个问题,然后我也会更新这个。要了解任何HtmlUnit更新,您可以使用https://twitter.com/HtmlUnit