Java HtmlUnit无法登录,提交后返回或停留在同一页面
我正试图在HtmlUnit的帮助下登录到一个站点,但单击“登录”后,它将返回相同的页面。我尝试了stackoverflow上提供的一些解决方案,但仍然不起作用。请提供帮助Java HtmlUnit无法登录,提交后返回或停留在同一页面,java,htmlunit,Java,Htmlunit,我正试图在HtmlUnit的帮助下登录到一个站点,但单击“登录”后,它将返回相同的页面。我尝试了stackoverflow上提供的一些解决方案,但仍然不起作用。请提供帮助 HtmlPage resultPage = null; try { HtmlPage signinPage = (HtmlPage)webClient.getPage("https://imeidb.gsma.com/imei/index"); System.out.println("signinPage ------
HtmlPage resultPage = null;
try {
HtmlPage signinPage = (HtmlPage)webClient.getPage("https://imeidb.gsma.com/imei/index");
System.out.println("signinPage -----------------------------------" + signinPage.getUrl());
HtmlForm form = signinPage.getFormByName("signIn");
HtmlTextInput loginField = (HtmlTextInput)form.getInputByName("username");
loginField.setValueAttribute(userName);
System.out.println("Username :"+loginField);
HtmlPasswordInput pwdField = (HtmlPasswordInput)form.getInputByName("password");
pwdField.setValueAttribute(password);
System.out.println("Password :"+pwdField);
HtmlButtonInput loginBtn = (HtmlButtonInput)signinPage.getHtmlElementById("loginImg");
// HtmlSubmitInput loginBtn = (HtmlSubmitInput)signinPage.getHtmlElementById("loginImg");
// resultPage = (HtmlPage)loginBtn.click();
WebWindow window = signinPage.getEnclosingWindow();
resultPage = (HtmlPage)loginBtn.click();
while(window.getEnclosedPage() == signinPage) {
// The page hasn't changed.
Thread.sleep(500);
}
// This loop above will wait until the page changes.
signinPage = (HtmlPage) window.getEnclosedPage();
System.out.println("2nd Page : "+signinPage.asText());
// webClient.closeAllWindows();
System.out.println("resultPage -----------------------------------" + resultPage.getUrl());
} catch (Exception e) {
e.printStackTrace();
logger.error(e, e);
sendAlert(errorMessage);
}
这将产生与浏览器相同的结果
String uri = "https://imeidb.gsma.com/imei/index";
String username =
String password =
try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60 /*, "localhost", 8888*/)) {
// webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
HtmlPage page = webClient.getPage(uri);
// System.out.println("----------------");
// System.out.println(page.asText());
HtmlForm form = page.getFormByName("signIn");
HtmlTextInput loginField = (HtmlTextInput) form.getInputByName("username");
loginField.type(username);
HtmlPasswordInput pwdField = (HtmlPasswordInput)form.getInputByName("password");
pwdField.type(password);
HtmlButtonInput loginBtn = (HtmlButtonInput)page.getHtmlElementById("loginImg");
loginBtn.click();
webClient.waitForBackgroundJavaScript(20000);
page = (HtmlPage) page.getEnclosingWindow().getTopWindow().getEnclosedPage();
System.out.println("----------------");
System.out.println(page.asText());
}
到目前为止您尝试了什么?我已经添加了代码,请检查。Thanks@MebinJoe请帮助请尝试调试,以及哪一行导致重定向到同一页面。我认为您需要在单击按钮时指定新的重定向URL。类似于
loginBtn.click().getWebResponse().getUrl()
或loginBtn.click().getWebResponse().getUrl().toExternalForm()