HtmlUnit не может войти, он возвращается или остается на той же странице после отправки - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь войти на сайт с помощью 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);
}

1 Ответ

0 голосов
/ 04 апреля 2019

Это дает тот же результат, что и браузер

    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());
    }
...