Ich versuche mich über HtmlUnit bei Google Acccount anzumelden, aber immer noch stimmt etwas nicht und ich bekomme die Anmeldeseite. Was mache ich falsch?Melden Sie sich mit HtmlUnit beim Google-Konto an.
- Set E-Mail
- klicken Sie auf Weiter
- Set Passwort
- Klicken Sie auf Login-Button
- Zum GMail Seite und es ist immer noch Login-Seite (Ausgang unten)
Mein Beispielcode :
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());
nach allem, was ich bin immer Ausgang
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
ich etwas offensichtlich vergessen?
I tryied auch Schaltflächen klicken, indem du JavaScript
loginPage.executeJavaScript("document.getElementById('next').click()");
loginPage.executeJavaScript("document.getElementById('signIn').click()");
Nun, es scheint, Google Login löst viele Weiterleitungen aus. Ich schlage vor, dass Sie die aktuelle Seiten-URL ausdrucken, um zu sehen, wo Sie sich befinden, und im Inkognito-Modus mit Ihrem bevorzugten Browser zu vergleichen. Es ist sogar möglich, dass Sie bei Google angemeldet sind. Sie können auch versuchen, zu einer authentifizierten Seite (in der Regel GMail) zu navigieren, um zu sehen, ob Sie verboten sind oder nicht. – Riduidel
Sehen Sie sich die letzten 2 Zeilen an 'HtmlPage gmailPage = client.getPage (" https://mail.google.com/mail/u/0/#inbox ");' 'log.info (gmailPage.asText()) ; ' Ich umadressieren Client nach alle auf Google Mail-Seite, und ich bekomme Ausgabe, die Login-Seite ist –
@ Jakub_Pomykała Mein schlechtes. Haben Sie versucht, einen HTTP-Proxy zu verwenden, um zu sehen, welche HTTP-Anfragen zwischen HtmlUnit und Google ausgetauscht werden? Vielleicht finden Sie bei der Anmeldung einige interessante Unterschiede zu Ihrem Browser. – Riduidel