очень сложно дать вам совет, основываясь на предоставленной вами информации.По крайней мере, нет URL, чтобы дать нам возможность воспроизвести вашу проблему, и вы ничего не сказали нам ни о каком выводе журнала.
Итак, вот мои грубые предложения:
- используйте последнюю версию HtmlUnitверсия или, что еще лучше, последняя версия снимка
- используйте самую последнюю имитацию браузера (на данный момент FF62)
- не устанавливайте никаких параметров, если вам не нужно (и не понимаете), что они делают
- waitForBackgroundJavaScript () не является опцией (как упоминалось здесь несколько раз), ее необходимо вызывать после действия
Нет в отношении нажатия кнопки;На сегодняшний день существует более или менее три вида кнопок
старая старая кнопка отправки.Кнопки такого типа отправляют некоторую форму на сервер, и вы возвращаетесь на новую страницу.Чтобы работать с этим, вы должны использовать результат метода click, например nextPage = button.click ();
тег кнопки HTML, который делает магию JavaScript с вашей текущей страницей.В этом случае вы можете проигнорировать результат метода click () и перейти к странице, которая у вас уже есть.Выполнение JavaScript может быть асинхронным, чтобы справиться с этим, вам нужно вызвать webClient.waitForBackgroundJavaScript (3000);после вызова click ()
причудливая супер-умная обработка действий на основе Ajax, выполненная в наши дни всеми этими js-фреймворками.Обычно это расширенная версия 2 - разница может заключаться в том, что страница заменяется (перезагружается), запускаемой из javascript.Если эта перезагрузка произойдет, объект вашей страницы (а также результат метода click) укажет на старую страницу.Чтобы справиться с этим делом, вы должны сделать что-то вроде этого
btn.click();
// wait for the async js
webClient.waitForBackgroundJavaScript(20000);
// get the current page from the window in case it was replaced by some js magic
newPage = (HtmlPage) page.getEnclosingWindow().getTopWindow().getEnclosedPage();
Надеюсь, что поможет