有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    从第一眼看,我认为这是因为javascript失败(var t的重复声明)。您可以在日志中看到错误。这在真正的浏览器中不会失败,可能会停止所需的js处理,因此只创建页面的一部分

    我已经对这个bug进行了一些分析,并且我能够在一个简单的场景中重现它(如果涉及到这种巨大的js库,这通常是最困难的一步)。将尝试在Rhino中修复此问题,但这需要一些时间

    请在https://github.com/HtmlUnit与您的测试用例一起打开一个问题。然后我会负责添加一个问题和建立一个公关。如果你喜欢,你可以添加一个链接到这个问题,然后我也会更新这个。要了解任何HtmlUnit更新,您可以使用https://twitter.com/HtmlUnit