1

我正在尝试使用 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

4

1 回答 1

0

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

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

于 2012-09-18T22:20:11.333 回答