Как я могу получить результат с HTML-страницы JavaScript с помощью HtmlUnit?

Сейчас я работаю над использованием HTML-кода JavaScript для проведения некоторых тестов. И я хочу использовать HtmlUnit для доступа к странице, чтобы получить текущие результаты на веб-странице JavaScript. И эта страница находится здесь (для источника страницы вы можете щелкнуть правой кнопкой мыши, чтобы увидеть источник):

http://itec.hust.edu.cn/~zhangcw/javascript.html

я хочу получить текущий результат о значении задержки «delay: xxx ms», рассчитанном с помощью JavaScript на этой странице. Однако, когда я использую HtmlUnit для захвата html, он всегда захватывает исходный источник этой страницы и не содержит текущего результата. Мой код такой:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://itec.hust.edu.cn/~zhangcw/javascript.html");
String source = page.asXml();
System.out.println(Source);

Источник содержит только исходные коды JavaScript и HTML-контент, а не результат выполнения JavaScript на странице. Что мне делать с помощью HtmlUnit?

Мой вопрос: как я могу использовать HtmlUnit для получения результата выполнения JavaScript на странице?

Спасибо за прочтение текста, сложного для моего английского.


person user3003918    schedule 18.11.2013    source источник


Ответы (1)


HtmlUnit имеет механизм JavaScript, который очень чувствителен к синтаксическим ошибкам. Так что тот факт, что что-то работает в обычном браузере (Chrome, IE, FF и т. д.), не означает, что оно будет работать и в HtmlUnit.

Я очень быстро просмотрел код и обнаружил слишком много синтаксических ошибок. Я даже проверил это через валидатор w3c и нашел 10 ошибок. Вот только один пример:

<button type="button style="

Вам явно не хватает цитаты.

А также некоторые ошибки, которые валидатор может не обнаружить, такие как:

<text id= _delay>

Вам не хватает кавычек, и у вас есть лишний пробел.

Наконец, наиболее вероятная причина, по которой код не работает, заключается в том, что вы определили его как HTML 4.01 Transitional и добавили к изображению атрибут HTML5 onerror. Более того, вы добавили к этому атрибуту фрагмент кода JavaScript, который не выполняется.

Исправление ошибок может помочь. Однако это не обязательно означает, что он будет работать после этого.

person Mosty Mostacho    schedule 18.11.2013
comment
спасибо, проверю ошибки. И я озадачен, правильно ли я вызываю htmlunit для выполнения JavaScript на html, как коды, которые я прикрепил к вопросу. - person user3003918; 19.11.2013
comment
Все в порядке (при условии, что Source все в нижнем регистре) :) - person Mosty Mostacho; 19.11.2013