HTMLUnitはJavascriptを待たない質問する

HTMLUnitはJavascriptを待たない質問する

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());

何か案は...?

ベストアンサー1

ご返信ありがとうございます。実は、自分で解決策を見つけたので、もっと早く報告すべきでした。どうやら、FF で WebClient を初期化するときに、次のようになります。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);

動作しているようです。WebClient をデフォルト コンストラクターで初期化すると、デフォルトで IE7 が使用され、FF の方が Ajax のサポートが優れているため、使用が推奨されるエミュレーターだと思います。

おすすめ記事