I'm trying to login to Google Acccount through HtmlUnit, but still something is wrong and I'm getting login page. What I'm doing wrong?
- Set email
- Click next button
- Set password
- Click login button
- Go to GMail page and it's still login page (output below)
My example code:
WebClient client = new WebClient(BrowserVersion.CHROME);
client.setHTMLParserListener(HTMLParserListener.LOG_REPORTER);
client.setJavaScriptEngine(new JavaScriptEngine(client));
client.getOptions().setJavaScriptEnabled(true);
client.getCookieManager().setCookiesEnabled(true);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());
client.getCache().setMaxSize(0);
client.getOptions().setRedirectEnabled(true);
String url = "https://accounts.google.com/login?hl=en#identifier";
HtmlPage loginPage = client.getPage(url);
client.waitForBackgroundJavaScript(1000000);
HtmlForm loginForm = loginPage.getFirstByXPath("//form[@id='gaia_loginform']");
List<HtmlInput> buttonInputs = loginForm.getInputsByValue("signIn");
HtmlInput nextButton = Iterables.getFirst(buttonInputs, null);
HtmlInput loginButton = Iterables.getLast(buttonInputs);
Thread.sleep(2000);
//setup email
HtmlInput emailInput = loginForm.getInputByName("Email");
emailInput.setValueAttribute(emailAddress);
Thread.sleep(2000);
//click next button
nextButton.click();
client.waitForBackgroundJavaScript(1000000);
Thread.sleep(2000);
//setup password
HtmlInput passwordInput = loginForm.getInputByName("Passwd");
passwordInput.setValueAttribute(password);
//click login button
loginButton.click();
client.waitForBackgroundJavaScript(1000000);
Thread.sleep(2000);
HtmlPage gmailPage = client.getPage("https://mail.google.com/mail/u/0/#inbox");
log.info(gmailPage.asText());
after all I'm getting output
2016-07-12 01:36:47 INFO GoogleAccountClient:91 - Gmail
One account. All of Google.
Sign in to continue to Gmail
Next Need help?
Sign inchecked
Create account
One Google Account for everything Google
About Google
Privacy
Terms
Help
English (United States)
identifier
I forgot something obvious?
I also tryied to click buttons by javascript
loginPage.executeJavaScript("document.getElementById('next').click()");
loginPage.executeJavaScript("document.getElementById('signIn').click()");