¿Cómo se maneja la ventana emergente de inicio de sesión usando Selenium WebDriver?

¿Cómo manejar la ventana emergente de inicio de sesión usando Selenium Webdriver? He adjuntado la pantalla de muestra aquí. ¿Cómo puedo ingresar / ingresar el nombre de usuario y la contraseña en esta ventana emergente de inicio de sesión / alerta?

Gracias y Saludos, enter image description here

Utilice el enfoque donde envía el nombre de usuario y la contraseña en Solicitud de URL:

http://username:password@the-site.com 

Entonces solo para que quede más claro. El nombre de usuario es username contraseña es password y el rest es la URL habitual de su sitio web de prueba

Funciona para mí sin necesidad de retoques.

Ejemplo de código Java:

 public static final String TEST_ENVIRONMENT = "the-site.com"; private WebDriver driver; public void login(String uname, String pwd){ String URL = "http://" + uname + ":" + pwd + "@" + TEST_ENVIRONMENT; driver.get(URL); } @Test public void testLogin(){ driver = new FirefoxDriver(); login("Pavel", "UltraSecretPassword"); //Assert... } 

Esto debería funcionar con Windows Server 2012 e IE.

 var alert = driver.SwitchTo().Alert(); alert.SetAuthenticationCredentials("username", "password"); alert.Accept(); 

Solución: autenticación de directorio activo de Windows usando Thread and Robot

Utilicé Java Thread y Robot con Selenium webdriver para automatizar el proceso de autenticación de directorios activos de Windows de nuestro sitio web. Esta lógica funcionó bien en Firefox y Chrome, pero no funcionó en IE. Por alguna razón, IE mata el controlador de la web cuando aparece la ventana de autenticación, mientras que Chrome y Firefox evitan que el controlador web muera. No lo intenté en otro navegador web como Safari.

 //... //Note: this logic works in Chrome and Firefox. It did not work in IE and I did not try Safari. //... //import relevant packages here public class TestDemo { static WebDriver driver; public static void main(String[] args) { //setup web driver System.setProperty("webdriver.chrome.driver", "path to your chromedriver.exe"); driver = new ChromeDriver(); //create new thread for interaction with windows authentication window (new Thread(new LoginWindow())).start(); //open your url. this will prompt you for windows authentication driver.get("your url"); //add test scripts below ... driver.findElement(By.linkText("Home")).click(); //..... //..... } //inner class for Login thread public class LoginWindow implements Runnable { @Override public void run() { try { login(); } catch (Exception ex) { System.out.println("Error in Login Thread: " + ex.getMessage()); } } public void login() throws Exception { //wait - increase this wait period if required Thread.sleep(5000); //create robot for keyboard operations Robot rb = new Robot(); //Enter user name by ctrl-v StringSelection username = new StringSelection("username"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); //tab to password entry field rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); Thread.sleep(2000); //Enter password by ctrl-v StringSelection pwd = new StringSelection("password"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); //press enter rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); //wait Thread.sleep(5000); } } } 

Esto es muy simple en WebDriver 3.0 (a partir de ahora está en Beta).

 Alert alert = driver.switchTo().alert() ; alert.authenticateUsing(new UserAndPassword(_user_name,_password)); driver.switchTo().defaultContent() ; 

Espero que esto ayude.

Utilicé IE, luego creé código así y luego de modificar varios códigos:

  public class TestIEBrowser { public static void main(String[] args) throws Exception { //Set path of IEDriverServer.exe. // Note : IEDriverServer.exe should be In D: drive. System.setProperty("webdriver.ie.driver", "path /IEDriverServer.exe"); // Initialize InternetExplorerDriver Instance. WebDriver driver = new InternetExplorerDriver(); // Load sample calc test URL. driver.get("http://... /"); //Code to handle Basic Browser Authentication in Selenium. Alert aa = driver.switchTo().alert(); Robot a = new Robot(); aa.sendKeys("host"+"\\"+"user"); a.keyPress(KeyEvent.VK_TAB); a.keyRelease(KeyEvent.VK_TAB); a.keyRelease(KeyEvent.VK_ADD); setClipboardData("password"); a.keyPress(KeyEvent.VK_CONTROL); a.keyPress(KeyEvent.VK_V); a.keyRelease(KeyEvent.VK_V); a.keyRelease(KeyEvent.VK_CONTROL); //Thread.sleep(5000); aa.accept(); } private static void setClipboardData(String string) { // TODO Auto-generated method stub StringSelection stringSelection = new StringSelection(string); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); } } 

El siguiente código Java de Selenium-Webdriver debería funcionar bien para manejar la ventana de alerta / ventana emergente:

 driver.switchTo().alert(); //Selenium-WebDriver Java Code for entering Username & Password as below: driver.findElement(By.id("userID")).sendKeys("userName"); driver.findElement(By.id("password")).sendKeys("myPassword"); driver.switchTo().alert().accept(); driver.switchTo().defaultContent(); 

Es mejor que prefiera la herramienta Autoit para manejar toda la actividad de Windows. Puede hacer un script usando la herramienta AutoIt para manejar su tarea de ventana. Luego, ese exe se puede ejecutar usando Selenium.

Estaba recibiendo la alerta de seguridad de Windows cada vez que se abría mi aplicación. para resolver este problema, utilicé el siguiente procedimiento

 import org.openqa.selenium.security.UserAndPassword; UserAndPassword UP = new UserAndPassword("userName","Password"); driver.switchTo().alert().authenticateUsing(UP); 

esto resolvió mi problema de iniciar sesión en la aplicación. Espero que esto ayude a quienes buscan autenticar alertas de seguridad de Windows.

Simplemente cambie a alerta y use authenticateUsing para establecer el nombre de usuario y la contraseña, y luego regrese a la ventana principal

 Alert Windowalert = driver.switchTo().alert() ; Windowalert.authenticateUsing(new UserAndPassword(_user_name,_password)); driver.switchTo().defaultContent() ; 

1 forma de manejar esto puede proporcionar detalles de inicio de sesión con url. por ejemplo, si su url es ” http: // localhost: 4040 ” y está solicitando “Nombre de usuario” y “Contraseña” en el mensaje de alerta, puede pasar baseurl como ” http: // username: password @ localhost: 4040 “. Espero que funcione

Puede usar esta secuencia de comandos Autoit para manejar la ventana emergente de inicio de sesión:

 WinWaitActive("Authentication Required","","10") If WinExists("Authentication Required") Then Send("username{TAB}") Send("Password{Enter}") EndIf'