Я кодирую сервер в java, а для части сервера мне нужен веб-сканер. Чтобы очистить веб-сайт, мне нужно войти в систему, и веб-скребок отлично работает при запуске в качестве основного метода, но при запуске на сервере нажатие кнопки не перенаправляется на новую страницу. Вот код.HtmlUnit - Проблемы с нажатием кнопки
String loginUrl="MY_URL";
WebClient web = new WebClient();
WebClientOptions options=web.getOptions();
web.getCookieManager().setCookiesEnabled(true);
options.setJavaScriptEnabled(true);
options.setPrintContentOnFailingStatusCode(false);
options.setCssEnabled(false);
options.setThrowExceptionOnFailingStatusCode(false);
options.setThrowExceptionOnScriptError(false);
options.setRedirectEnabled(true);
try {
final HtmlPage firstPage = (HtmlPage)web.getPage(loginUrl);
final HtmlForm form = firstPage.getForms().get(0);
final HtmlTextInput userNameField = form.getInputByName("USER");
userNameField.setValueAttribute("MY_USERNAME");
final HtmlPasswordInput passWordField = form.getInputByName("PASSWORD");
passWordField.setValueAttribute("MY_PASSWORD");
HtmlButton button =(HtmlButton)firstPage.getElementById("safeLoginbtn");
System.out.println(firstPage.getUrl().toString());
button.click();
System.out.println(web.getEnclosedPage().getUrl().toString());
}
catch(Exception e)
{
e.printStackTrace();
}
При запуске этого в главном способе два заявления печати показывает две разных страниц, журнал на странице и страницу за журналом в соответственно. Но при работе на сервере два оператора печати имеют почти одинаковый URL-адрес, и оба являются URL-адресами для страницы входа в систему. Почему это могло произойти? Почему код действует по-другому в основном методе по сравнению с запуском на сервере?
Сервер управляется платформой Spring, если это связано с ней.
EDIT: Пример здесь:.
WebClient webClient = new WebClient();
HtmlPage page1 = webClient.getPage("http://www.facebook.com");
HtmlForm form = page1.getForms().get(0);
HtmlSubmitInput button = (HtmlSubmitInput) form.getInputsByValue("Log In").get(0);
HtmlTextInput textField = form.getInputByName("email");
textField.setValueAttribute("[email protected]");
HtmlPasswordInput textField2 = form.getInputByName("pass");
textField2.setValueAttribute("MY_PASS");
HtmlPage page2 = button.click();
System.out.println(page2.asText());
Это работает в главном методе приложения Java, но при запуске на сервере рейсовой аннотации Spring, она не будет регистрировать меня в
'HtmlPage page2 = button.click();' и затем проверить 'page2.asXml()'. Вы также можете опубликовать свой полный случай с URL-адресом, пожалуйста, прочитайте http://htmlunit.sourceforge.net/submittingJSBugs.html –
@AhmedAshour Я отредактировал сообщение, чтобы подать пример – JoeSpletts
Интересно, можете ли вы опубликовать минимальный проект Spring, чтобы мы могли отлаживаем дальше. –