Tengo un servicio Selenium que tiene que iniciar sesión en mi cuenta de gmail como primer paso. Esta funcionalidad funcionaba hace un par de semanas, pero de repente el inicio de sesión comienza a fallar y veo este error en el navegador, probé los controladores de Chrome y Firefox en selenio.
Este error se produce después de que el servicio de selenio inserta el correo electrónico, la contraseña y hace clic en el botón de inicio de sesión. También se informó un error similar en el foro de soporte de Google aquí: https://support.google.com/accounts/thread/10916318?hl=es . Dijeron que "¡Google parece haber introducido la detección de herramientas de automatización en su flujo de inicio de sesión!" pero no hay solución en este hilo.
Algunos otros detalles que pueden ser útiles
- No puedo iniciar sesión manualmente en las cuentas de Google en los navegadores
abiertos por Selenium. - Pero puedo iniciar sesión manualmente en estas cuentas en la aplicación Google Chrome.
Avíseme si necesita echar un vistazo al código, lo publicaré aquí. ¡Gracias por adelantado!
Editar Agregar código de muestra para referir.
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()));
}
}