HtmlUnit не загружает всю страницу - PullRequest
0 голосов
/ 24 июня 2019

HtmlUnit не загружает часть этой страницы:

https://www.milanuncios.com/mis-anuncios/

При проверке в браузере, раздел:

<div class="ma-LayoutBasicMainContent">

Содержит много содержимого, но при загрузке с помощью HtmlUnit оно пустое

Я пробовал различные переключатели webClient, включая

webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setDownloadImages(true);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.setJavaScriptTimeout(10000);

Но всегда один и тот же результат. Раздел "ma-LayoutBasicMainContent" не загружен. Это код, который я использую:

import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.*;

class MarnvHtmlUnitTest {

    public static void main(String[] args) {

        WebClient webClient = null;

        try {

            final long javascriptTimeout = 10000;

            webClient = new WebClient();
            webClient.setAjaxController(new NicelyResynchronizingAjaxController());
            webClient.getOptions().setDownloadImages(true);
            webClient.getOptions().setCssEnabled(true);
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.setJavaScriptTimeout(10000);

            String loginURL = "https://www.milanuncios.com/mis-anuncios/";
            System.out.println("Connecting to " + loginURL + " (" + webClient.getBrowserVersion() + ")");

            HtmlPage page = webClient.getPage(loginURL);
            System.out.print("    Waiting for Javascript to complete...");
            long millis = System.currentTimeMillis();
            webClient.waitForBackgroundJavaScript(javascriptTimeout);                              
            System.out.println(System.currentTimeMillis() - millis + " milliseconds");
            if (!page.asText().contains("ACCESO A MIS ANUNCIOS")) {
                System.out.println("ERROR!");
                System.out.println(page.asXml());
                System.out.println("EXITING. " + webClient.getWebWindows().size());
                return;
            }

            System.out.println("OK");

        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            if (webClient != null)
                webClient.close();
        }
    }
}

В случае правильной загрузки страницы, страница должна содержать текст «ACCESO A MIS ANUNCIOS». Обратите внимание, что waitForBackgroundJavaScript возвращает сразу, что для меня странно ... обычно несколько секунд ждет, пока страница полностью не загрузится. Я использую HtmlUnit 2.35.0

...