HtmlUnit WebClient.getPage не обрабатывает JavaScript - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь использовать HtmlUnit WebClient.getPage для загрузки страницы с помощью JavaScript.Но загруженная страница не обрабатывает код JavaScript в ней.

Я попытался добавить все параметры в WebClient на основе всех связанных ответов, которые я могу найти.Он по-прежнему не работает.

    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.getOptions().setUseInsecureSSL(true);
    String testUrl = "https://www.coursera.org/browse/data-science";
    try {
        final HtmlPage page = webClient.getPage(testUrl);
        webClient.waitForBackgroundJavaScript(20 * 1000);
        System.out.println(page.asXml());
    }catch(Exception e) {
        e.printStackTrace();
    }
    webClient.close();

На странице "https://www.coursera.org/browse/data-science", я ожидаю увидеть все курсы, перечисленные в page.asXml (), как элемент html. Но он показывает только курсыв разделе «Актуальные курсы» в качестве элемента html.

1 Ответ

0 голосов
/ 21 декабря 2018

С первого взгляда я думаю, что это потому, что javascript терпит неудачу (двойное объявление var t).Вы можете увидеть ошибку в журнале.Это не дает сбоя в реальных браузерах и может остановить требуемую обработку js, и в результате создаются только части страницы.

Мы уже немного проанализировали ошибку, и я могу воспроизвести ее простымсценарий (это обычно самый сложный шаг, если речь идет об огромных js-библиотеках).Постараюсь исправить это в Rhino, но это потребует некоторого времени.

Пожалуйста, откройте вопрос на https://github.com/HtmlUnit с вашим тестовым примером.Затем я позабочусь о добавлении проблемы и создании PR.Если вам нравится, вы можете добавить ссылку на этот вопрос, тогда я буду обновлять это также.Чтобы получать информацию о любых обновлениях HtmlUnit, вы можете использовать https://twitter.com/HtmlUnit.

...