Cómo manejar la ventana emergente de autenticación con Selenium WebDriver usando Java
authentication selenium-webdriver (6)
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
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", "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 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
Enfrenté este problema varias veces en mi aplicación.
En general, podemos manejar esto con los siguientes 2 enfoques.
Pase el nombre de usuario y la contraseña en la url misma
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);
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í
No use 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 dominio como "usuario del dominio", debe agregar doble barra /
a la url:
//localdomain/user:[email protected]
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);