Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HtmlUnit无法登录,提交后返回或停留在同一页面_Java_Htmlunit - Fatal编程技术网

Java HtmlUnit无法登录,提交后返回或停留在同一页面

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 ------

我正试图在HtmlUnit的帮助下登录到一个站点,但单击“登录”后,它将返回相同的页面。我尝试了stackoverflow上提供的一些解决方案,但仍然不起作用。请提供帮助

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()