我有一个基于GWT的页面,我想使用HtmlUnit为它创建一个HTML快照。该页面使用产品上的Ajax / JavaScript信息进行加载,因此大约1秒钟会出现一条正在加载…消息,然后显示内容。
问题是HtmlUnit似乎无法捕获信息,而我得到的只是“正在加载…”范围。
以下是HtmlUnit的实验代码,我在其中尝试给它足够的时间来等待数据加载,但是它似乎并没有改变任何内容,而且我仍然无法捕获GWT javascript加载的数据。
WebClient webClient = new WebClient(); webClient.setJavaScriptEnabled(true); webClient.setThrowExceptionOnScriptError(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); WebRequest request = new WebRequest(new URL("<my_url>")); HtmlPage page = webClient.getPage(request); int i = webClient.waitForBackgroundJavaScript(1000); while (i > 0) { i = webClient.waitForBackgroundJavaScript(1000); if (i == 0) { break; } synchronized (page) { System.out.println("wait"); page.wait(500); } } webClient.getAjaxController().processSynchron(page, request, false); System.out.println(page.asXml());
有任何想法吗…?
感谢您的回应。实际上,我应该早点报告我自己找到了解决方案。显然,使用FF初始化WebClient时:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
它似乎正在工作。当使用默认构造函数初始化WebClient时,默认情况下使用IE7,我想FF对Ajax具有更好的支持,并且是推荐使用的仿真器。