htmlunit: zwraca całkowicie załadowaną stronę

Korzystam z biblioteki HtmlUnit dla języka Java, aby programowo manipulować stronami internetowymi. Nie mogę znaleźć działającego rozwiązania mojego problemu: jak ustalić, że wszystkie połączenia AJAX są zakończone i zwrócić całkowicie załadowaną stronę internetową? Oto, co próbowałem:

Najpierw tworzęWebClient instancja i wywołanie mojej metodyprocessWebPage(String url, WebClient webClient)

WebClient webClient = null;
    try {
        webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
        webClient.setThrowExceptionOnScriptError(false);
        webClient.setThrowExceptionOnFailingStatusCode(false);
        webClient.setJavaScriptEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
    } catch (Exception e) {
        System.out.println("Error");
    }
    HtmlPage currentPage = processWebPage("http://www.example.com", webClient);

A oto moja metoda, która powinna zwrócić całkowicie załadowaną stronę internetową:

private static HtmlPage processWebPage(String url, WebClient webClient) {
    HtmlPage page = null;
    try {
        page = webClient.getPage(url);
    } catch (Exception e) {
        System.out.println("Get page error");
    }
    int z = webClient.waitForBackgroundJavaScript(1000);
    int counter = 1000;
    while (z > 0) {
        counter += 1000;
        z = webClient.waitForBackgroundJavaScript(counter);
        if (z == 0) {
            break;
        }
        synchronized (page) {
            System.out.println("wait");
            try {
                page.wait(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    System.out.println(page.asXml());
    return page;
}

Żez zmienna powinna powrócić0 jeśli nie ma JavaScript do załadowania.

jakieś pomysły? Z góry dziękuję.

EDYTOWAĆ: Znalazłem częściowo działające rozwiązanie mojego problemu, ale w tym przypadku powinienem wiedzieć, jak wygląda strona odpowiedzi. Na przykład, jeśli całkowicie załadowana strona zawiera tekst „kompletny”, moim rozwiązaniem byłoby:

HtmlPage page = null;
    int PAGE_RETRY = 10;
    try {
        page = webClient.getPage("http://www.example.com");
    } catch (Exception e) {
        e.printStackTrace();
    }
    for (int i = 0; !page.asXml().contains("complete") && i < PAGE_RETRY; i++) {
        try {
            Thread.sleep(1000 * (i + 1));
            page = webClient.getPage("http://www.example.com");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Ale jakie byłoby rozwiązanie, jeśli nie wiem, jak wygląda całkowicie załadowana strona?

questionAnswers(1)

yourAnswerToTheQuestion