TLDR:
Я авторизируюсь с помощью HtmlUnit
безголового браузера, сайт перенаправляет меня на страницу, где я должен нажать на кнопку отправки, чтобы продолжить, не могу найти ее элемент в HtmlUnit
. Не удается найти способ щелкнуть по нему на go на нужной странице после входа в систему. Эта страница не там с обычным человеческим логином.
Справочная информация
В моей школе есть учебная среда, в которой мы подписываемся на курсы для загрузки материала урока. и тому подобное.
Когда я только начал изучать Java для курса, я подумал, что смогу попробовать и посмотреть, смогу ли я создать приложение java, которое регистрируется и просто получает весь материал урока для меня.
Я должен отметить, что эта среда обучения требует входа в систему из среды Microsoft , которая похожа на ту, что была в Outlook, но настроена для университетов. Возможно, это дает ключ к пониманию того, какой страницей я должен быть.
То, что я пробовал
Я посмотрел на HtmlUnit Похоже, что безголовый браузер может достичь sh моей цели входа в систему, по крайней мере. Я установил WebClient
и перешел на страницу.
Примерно так:
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
HtmlPage page = webClient.getPage(LOGIN_FORM_URL);
Все прошло хорошо, я добрался до страницы входа, изолировал форму и заполнил ввод мои учетные данные:
HtmlForm form = page.getForms().get(0);
HtmlEmailInput username = form.getInputByName("UserName");
HtmlPasswordInput pass = form.getInputByName("Password");
HtmlElement buttonElement = form.getElementsByTagName("span").get(1);
username.setValueAttribute(USERNAME);
pass.setValueAttribute(PASSWORD);
HtmlPage page2 = buttonElement.click();
Проблема
Я ожидал, что меня перенаправят в среду обучения, вместо этого я получил странную страницу. Это структура при печати с page2.asXml()
:
<html>
<head>
<title>
Working...
</title>
</head>
<body>
<form method="POST" name="hiddenform" action="https://engine.surfconext.nl:443/authentication/sp/consume-assertion">
<input type="hidden" name="SAMLResponse" value="PHNhbWxwOl.... An insanely long value />
<noscript>
<p>Script is disabled. Click Submit to continue.</p><input type="submit" value="Submit" />
</noscript>
</form>
<script language="javascript">
//<![CDATA[
window.setTimeout('document.forms[0].submit()', 0);
//]]>
</script>
</body>
</html>
Я могу не , чтобы понять, как нажимать на ввод между тегами noscript.
Я попытался найти вход для отправки с помощью getElementsByTagName
, чтобы смоделировать щелчок по нему, но он даже не распознал, что он там есть. Когда я использовал getChildElementCount()
для тега noscript, он вернул 0
.
Нужно ли делать что-то особенное, чтобы пройти эту страницу?