Здесь уже есть ответы на похожие вопросы.
Не имея аккаунта на этой странице, я не могу предоставить какие-либо подробности или проверенные решения.Но в любом случае некоторые советы:
- автоматизация веб-страниц требует реальных знаний об основных веб-технологиях
- убедитесь, что для вашего веб-клиента включен javascript
обычностраницы по крайней мере частично выполняют инициализацию на основе JavaScript;из-за этого рекомендуется дождаться js после получения страницы или принудительного действия
HtmlPage signinPage = (HtmlPage)webClient.getPage("https://imeidb.gsma.com/imei/index");
webClient.waitForBackgroundJavaScript(2000);
использовать метод type для заполнения полей ввода
pwdField.type(password);
метод click () возвращает страницу результатов синхронизации;в вашем случае кнопка не является кнопкой отправки;обычно это означает, что страница обновляется с помощью javascript (async).Замените
resultPage = (HtmlPage) loginBtn.click();
на
(HtmlPage) loginBtn.click();
webClient.waitForBackgroundJavaScript(20000);
resultPage = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();
Если это не поможет, вы можете отправить мне учетные данные для страницы, и я постараюсь помочь вам с более подробной информацией.
И наконец - это работает здесь.В результате я попадаю на страницу «Вопрос безопасности учетной записи», как в реальных браузерах.
String url = "https://imeidb.gsma.com/imei/index";
try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60)) {
HtmlPage signinPage = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(10000);
// System.out.println("----------------");
// System.out.println(signinPage.asXml());
HtmlForm form = signinPage.getFormByName("signIn");
HtmlTextInput loginField = (HtmlTextInput)form.getInputByName("username");
loginField.type("xxxx");
HtmlPasswordInput pwdField = (HtmlPasswordInput)form.getInputByName("password");
pwdField.type("yyyy");
HtmlButtonInput loginBtn = (HtmlButtonInput)signinPage.getHtmlElementById("loginImg");
loginBtn.click();
webClient.waitForBackgroundJavaScript(10000);
HtmlPage resultPage = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();
System.out.println("----------------");
System.out.println(resultPage.asXml());
}