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 does not wait for Javascript

于 2012-09-18T22:20:11.333 に答える