Cómo manejar la ventana emergente de autenticación con Selenium WebDriver usando Java

Estoy tratando de manejar la ventana emergente de autenticación usando el siguiente código:

FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("network.http.phishy-userpass-length", 255); profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "xxxx"); driver = new FirefoxDriver(profile); baseUrl="http://" + login + ":" + password + "@" + url; driver.get(baseUrl + "/"); 

Cuando ejecuto la prueba, la página muestra la ventana emergente de autenticación y sigue cargando hasta que haga clic en el botón Cancelar. En ese momento, puedo acceder a la siguiente página, esto significa que el éxito de la autenticación, pero siempre muestra la ventana emergente de autenticación

El método de alerta, authenticateUsing() permite omitir el cuadro de Http Basic Authentication .

 WebDriverWait wait = new WebDriverWait(driver, 10); Alert alert = wait.until(ExpectedConditions.alertIsPresent()); alert.authenticateUsing(new UserAndPassword(username, password)); 

A partir de Selenio 3.4 todavía está en beta

En este momento, la implementación solo se realiza para InternetExplorerDriver

No use el perfil de Firefox y pruebe el siguiente código:

 driver.get("http://UserName:Password@Example.com"); 

Si lo está implementando en el navegador IE, hay ciertas cosas que debe hacer.

En caso de que su servidor de autenticación requiera un nombre de usuario con dominio como “usuario del dominio”, debe agregar doble barra / a la url:

 //localdomain\user:password@example.com 

Enfrenté este problema varias veces en mi aplicación.

En general, podemos manejar esto con los siguientes 2 enfoques.

  1. Pase el nombre de usuario y la contraseña en la url misma

  2. Puede crear un Script de AutoIT y una secuencia de comandos de llamada antes de abrir la url.

Por favor, consulte el artículo a continuación en el que he mencionado ambas formas:
Manejar Autenticación / ventana de inicio de sesión en Selenium Webdriver

Esto debería funcionar para Firefox usando el complemento AutoAuth :

 FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default"); File ffPluginAutoAuth = new File("D:\\autoauth-2.1-fx+fn.xpi"); firefoxProfile.addExtension(ffPluginAutoAuth); driver = new FirefoxDriver(firefoxProfile); 

Si tiene que tratar con la autenticación de proxy NTLM, una buena alternativa es usar un proxy local configurado usando CNTLM .

Las credenciales y el dominio están configurados en /etc/cntlm.conf .

Luego, puede usar su propio proxy que maneja todas las cosas de NTLM.

 DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); proxy.setHttpProxy("localhost:3128"); capabilities.setCapability(CapabilityType.PROXY, proxy); driver = new ChromeDriver(capabilities); 

Intenta seguir la solución y avísame en caso de tener algún problema:

 driver.get('https://example.com/') driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password"); driver.switchTo().alert().accept(); 

Esto está funcionando bien para mí