Cómo manejar la ventana emergente de autenticación con Selenium WebDriver usando Java
Estoy intentando 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", "x.x.x.x");
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 cargándose hasta que hago clic en el botón cancelar. En ese momento, puedo acceder a la página siguiente, esto significa que la autenticación fue exitosa, pero aún así siempre se muestra la ventana emergente de autenticación.
El método de alerta authenticateUsing()
le permite omitir el cuadro de autenticación básica Http .
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
A partir de Selenium 3.4 todavía está en versión beta.
En este momento la implementación sólo se realiza para
InternetExplorerDriver
No utilice el perfil de Firefox y pruebe el siguiente código:
driver.get("http://UserName:[email protected]");
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 un dominio como "domainuser", deberá agregar una doble barra /
a la URL:
//localdomain\user:[email protected]
Pruebe la siguiente solución y avíseme en caso de cualquier problema:
driver.get('https://example.com/')
driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password");
driver.switchTo().alert().accept();
Esto me funciona bien
Me enfrenté a este problema varias veces en mi solicitud.
Generalmente podemos manejar esto con los dos enfoques siguientes.
Pase el nombre de usuario y la contraseña en la propia URL.
Puede crear un script de AutoIT y llamar al script antes de abrir la URL.
Consulte el artículo a continuación en el que mencioné ambas formas:
Manejar la ventana de autenticación/inicio de sesión en Selenium Webdriver
Esto debería funcionar para Firefox utilizando 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);