Comment gérer la fenêtre pop up de connexion en utilisant Selenium WebDriver?

comment gérer la fenêtre pop up de connexion en utilisant Selenium Webdriver? J'ai joint l'exemple d'écran ici. Comment puis-je entrer/entrer le nom D'Utilisateur et le mot de passe dans cette fenêtre pop up/alert?

Remerciements Et Salutations, enter image description here

29
demandé sur xyz 2012-07-17 16:28:10

11 réponses

utilisez l'approche où vous envoyez le nom d'utilisateur et le mot de passe dans la demande D'URL:

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

donc juste pour être plus clair. Le nom d'utilisateur est username mot de passe password et le reste est d'habitude URL de votre test web

fonctionne pour moi sans avoir besoin de retouches.

exemple de code 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...
}
35
répondu Pavel Janicek 2015-11-23 09:59:47

cela devrait fonctionner avec windows server 2012 et IE.

var alert = driver.SwitchTo().Alert();

alert.SetAuthenticationCredentials("username", "password");

alert.Accept();
7
répondu Wahab Majboor 2016-06-09 07:41:54

Solution: l'authentification Windows active directory à l'aide de Fil et Robot

J'ai utilisé Java Thread et Robot avec Selenium webdriver pour automatiser le processus d'authentification Windows active directory de notre site web. Cette logique a bien fonctionné dans Firefox et Chrome, mais pas dans IE. Pour une raison quelconque, IE tue le webdriver lorsque la fenêtre d'authentification s'affiche alors que Chrome et Firefox empêchent le pilote web de se faire tuer. Je n'ai pas essayé dans un autre navigateur web comme 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);
        }                        
    }      
}
4
répondu sadipan bhattacharjee 2015-11-23 10:00:11

c'est très simple dans WebDriver 3.0(à partir de Maintenant il est en version bêta).

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

espérons que cela aide.

2
répondu Kshetra Mohan Prusty 2018-07-30 08:53:55

j'ai utilisé IE, puis créer du code comme ça et fonctionne après modification plusieurs codes:

       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);
        }
}
1
répondu Shadi 2017-01-11 14:51:49

le code Java Selenium-Webdriver suivant devrait bien fonctionner pour gérer la fenêtre alerte/pop up:

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();
0
répondu Ripon Al Wasim 2015-11-23 10:00:23

mieux vous préférez L'outil Autoit pour gérer toute l'activité de vos fenêtres. Vous pouvez faire un script en utilisant L'outil AutoIt pour gérer votre tâche de fenêtre, puis plus tard cet exe peut être exécuté en utilisant le sélénium.

0
répondu Arpan Saini 2017-01-16 22:35:26

je recevais une alerte de sécurité windows à chaque fois que mon application s'ouvrait. pour résoudre ce problème j'ai utilisé la procédure suivante

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

ceci a résolu mon problème de connexion à l'application. J'espère que cela pourrait aider qui sont tous à la recherche d'authentification windows alerte de sécurité.

0
répondu Srinu Seela 2017-02-08 20:52:21

passez simplement à alert et utilisez authenticateUsing pour définir le nom d'utilisateur et le mot de passe et ensuite revenir à la fenêtre parent

Alert Windowalert = driver.switchTo().alert() ;
Windowalert.authenticateUsing(new UserAndPassword(_user_name,_password));
driver.switchTo().defaultContent() ; 
0
répondu iamsankalp89 2017-09-27 09:31:54

1 façon de gérer cela, vous pouvez fournir des détails de connexion avec url. par exemple, si votre url est "http://localhost:4040" et il pose la question "nom d'utilisateur" et "Mot de passe" sur l'alerte de message d'invite alors vous pouvez passer baseurl "http://username:password@localhost:4040". Espérons que cela fonctionne

0
répondu vikram k 2018-08-02 09:28:33

Vous pouvez utiliser ce script Autoit pour gérer le popup de connexion:

WinWaitActive("Authentication Required","","10")
If WinExists("Authentication Required") Then
Send("username{TAB}")
Send("Password{Enter}")
EndIf'
-1
répondu Jitendra 2013-01-30 11:56:55