加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

HTMLUnit不等待Javascript

发布时间:2020-12-14 22:25:04 所属栏目:资源 来源:网络整理
导读:我有一个基于GWT的页面,我想使用HtmlUnit为它创建一个HTML快照。 该页面使用产品上的Ajax / JavaScript信息加载,因此大约1秒钟内有一个“加载…”消息,然后出现该内容。 问题是HtmlUnit似乎没有捕获信息,所有我得到的是“加载…”跨度。 以下是HtmlUnit
我有一个基于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有更好的支持,是推荐使用的模拟器。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读