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

最佳答案

我也遇到了类似的问题。你试过使用这样的循环吗:

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

关于ajax - 带有GWT应用程序的HtmlUnit返回不完整的页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12367419/

10-13 02:26