【问题标题】:HtmlUnit with GWT app returns incomplete page带有 GWT 应用程序的 HtmlUnit 返回不完整的页面
【发布时间】:2012-09-11 10:11:18
【问题描述】:

我正在尝试使用 HtmlUnit 制作我的 GWT 应用程序的 HTML 快照。这个想法是让我的 AJAX 应用程序可抓取。

很遗憾,我正在获取的页面似乎并不完整。当我在普通浏览器中访问该页面时,它缺少可查看的内容。我只需要 HTML 快照中的文本。 这是我的代码:

public class Browser {

    public static void main(String[] args) throws IOException, InterruptedException {

       final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
        webClient.setJavaScriptEnabled(true);//JS is enabled by default but...
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());

        HtmlPage page = webClient.getPage("http://meridianbet.com");

        int n = webClient.waitForBackgroundJavaScript(30000);

        System.out.println("Executing " + n + " JavaSript jobs!");

        System.out.println("OUTPUT: " + page.asXml());
        webClient.closeAllWindows();
       }
}

执行代码后还有 7 个未完成的 JS 作业。而且无论我等多久,工作都不会被执行。 有什么帮助吗? //我使用的是最新的htmlunit 2.10

【问题讨论】:

    标签: ajax gwt seo htmlunit


    【解决方案1】:

    我遇到了类似的问题。您是否尝试过使用这样的循环:

    while (i > 0)
            {
                i = webClient.waitForBackgroundJavaScript(1000);
    
                if (i == 0)
                {
                    break;
                }
                synchronized (page) 
                {
                    System.out.println("wait");
                    page.wait(500);
                }
            }
    

    当我使用这样的循环时,它只是坐在那里并说:“等待”无限期。但也许它对你有用。

    如果你确实解决了你的问题,请确保发布你所做的,因为我认为它会解决我同样的问题。

    我在这个问题上找到了代码:HTMLUnit doesn't wait for Javascript

    【讨论】:

    • 我已经试过了。我得到了无限循环,因为有未完成的 JavaScript 工作。问题是我在错误的地方获得了锚定结束标签。
    • 这就是我得到的 这就是我得到的普通浏览器 。由于我没有找到解决方案,我正在手动更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2012-07-29
    • 2018-11-24
    • 2019-03-12
    相关资源
    最近更新 更多