#javascript #html #onclick #htmlunit
#javascript #HTML #onclick #htmlunit
Вопрос:
У меня возникли проблемы с доступом к сайту с помощью HtmlUnit. Сайт возвращает ошибки и время ожидания сайта, когда я использую «webclient.getPage (URL)» с включенным JavaScript, но когда я отключаю JavaScript, я могу получить страницу. Проблема возникает, когда я пытаюсь перейти со страницы на страницу, вся навигация выполняется на сайте в виде методов JavaScript в атрибуте ‘onclick’ тегов HTML.
У меня отключен JavaScript при получении страницы (originalPage), но я включаю его после получения страницы и при попытке выполнить метод JavaScript в атрибуте ‘onclick’. Метод JavaScript находится в теге script в ‘originalPage’.
originalPage = webClient.getPage(url);
webclient.setjavascriptenabled(true)
javaScriptCode = "javascript:getNextPage();";
scriptResult = originalPage.executeJavaScript(javaScriptCode);
nextPage = scriptResult.getNewPage();
Мой код не возвращает следующую страницу, а вместо этого возвращает ту же страницу, что и ‘originalPage’. Возможно ли, что из-за того, что я получил ‘originalPage’, когда JavaScript был отключен, он не будет работать? Есть ли способ, который я могу выбрать, когда файлы JS загружаются при вызове getPage()?
(Я проверил, что метод JavaScript работает в браузере)
Ответ №1:
Возможно ли, что из-за того, что я получил ‘originalPage’, когда JavaScript был отключен, он не будет работать?
Абсолютно.
Есть ли способ, который я могу выбрать, когда файлы JS загружаются при вызове getPage()?
Это возможно, но вам придется реализовать свой собственный WebConnection
и проанализировать текст HTML, прежде чем он будет обработан HtmlUnit. Определенно не смешная задача. Кроме того, если бы вы в конечном итоге анализировали HTML как текст, тогда не было бы никакой необходимости в HtmlUnit, верно?
Другим подходом было бы преобразовать код JS, который вы хотите выполнить, в HTTP-запросы и запускать их вручную с помощью WebRequests
. В качестве альтернативы, и если вы не возражаете против использования решения, не связанного с Java, используйте PhantomJS, который имеет лучшую поддержку JS.
Комментарии:
1. Есть ли способ заставить мой метод JavaScript работать без необходимости ссылаться на исходную страницу? Как консоль в веб-браузере?
2. Вы должны выполнить JS на странице