Eu tenho um serviço Selenium que precisa fazer login na minha conta do Gmail como o primeiro passo. Essa funcionalidade estava funcionando há algumas semanas, mas de repente o logon começa a falhar e estou vendo esse erro no navegador, tentei nos drivers Chrome e Firefox no selênio -
Este erro ocorre após o serviço selênio inserir o email, a senha e clicar no botão de login. Um erro semelhante também foi relatado no Fórum de suporte do Google aqui - https://support.google.com/accounts/thread/10916318?hl=en , eles disseram que "o Google parece ter introduzido a detecção de ferramentas de automação no fluxo de login!" mas não há solução neste segmento.
Alguns outros detalhes que podem ser úteis
- Não consigo fazer login manualmente nas Contas do Google nos navegadores
abertos pelo Selenium. - Mas consigo fazer login manualmente nessas contas no aplicativo Google Chrome.
Deixe-me saber se você precisa dar uma olhada no código, vou publicá-lo aqui. Desde já, obrigado!
Edite Adicionando código de amostra para referência.
public void loginGoogleAccount(String emailId, String password) throws Exception {
ChromeOptions options = new ChromeOptions();
options.addArguments("--profile-directory=Default");
options.addArguments("--whitelisted-ips");
options.addArguments("--start-maximized");
options.addArguments("--disable-extensions");
options.addArguments("--disable-plugins-discovery");
WebDriver webDriver = new ChromeDriver(options);
webDriver.navigate().to("https://accounts.google.com");
Thread.sleep(3000);
try {
WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
email.sendKeys(emailId);
Thread.sleep(1000);
WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
emailNext.click();
Thread.sleep(1000);
WebDriverWait wait = new WebDriverWait(webDriver, 60);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));
Thread.sleep(3000);
WebElement passwordElement = webDriver.findElement(By.xpath("//input[@type='password']"));
passwordElement.sendKeys(password);
Thread.sleep(1000);
WebElement passwordNext = webDriver.findElement(By.id("passwordNext"));
passwordNext.click();
} catch (Exception e) {
LOGGER.info(String.format("No email/password field available or it is already logged in: [%s]: ",
e.getMessage()));
}
}