首页 > 解决方案 > 使用 HtmlUnit 启用 JavaScript 的问题

问题描述

我是 HtmlUnit 的新手,我正在编写一个演示脚本来加载网页的源 HTML 并将其写入 txt 文件。

public static void main(String[] args) throws IOException {
    try (final WebClient wc = new WebClient(BrowserVersion.BEST_SUPPORTED)) {
        wc.getOptions().setThrowExceptionOnScriptError(false);
        
        final HtmlPage page = wc.getPage("https://www.sainsburys.co.uk/gol-ui/SearchResults/biscuits");
        WebResponse res = page.getWebResponse();
        String html = res.getContentAsString();
        
        FileWriter fw = new FileWriter(dir + "/pageHtml.txt");
        fw.write(html);
        fw.close();
    }
}

但是,它会返回禁用 JavaScript 的 HTML。为了尝试解决这个问题,我添加了这一行以确保在 WebClient 上启用了 JS:

        wc.getOptions().setJavaScriptEnabled(true);

尽管如此,什么都没有改变。我是个白痴,还是有一些更微妙的东西需要改变?

谢谢你的帮助!^_^

标签: javaspring-boothtmlunit

解决方案


WebResponse res = page.getWebResponse();
String html = res.getContentAsString();

这是您从服务器获得的响应(代码)。如果您想拥有当前的 DOM(js 处理完成后的那个,您可以执行类似的操作

HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(60_000);

System.out.println(page.asXml());

或者

System.out.println(page.asNormalizedText());

推荐阅读