selenium-webdriver - tables - selenium webdriver alert message
¿Cómo se maneja la ventana emergente de inicio de sesión usando Selenium WebDriver? (11)
¿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,
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
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.
Esto debería funcionar con Windows Server 2012 e IE.
var alert = driver.SwitchTo().Alert();
alert.SetAuthenticationCredentials("username", "password");
alert.Accept();
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.
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''
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() ;
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);
}
}
Utilice el enfoque donde envía el nombre de usuario y la contraseña en Solicitud de URL:
http://username:[email protected]
Entonces solo para que quede más claro. El nombre de usuario es username
contraseña es password
y el resto 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...
}
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);
}
}
}