it-swarm.com.de

Wie gehe ich mit dem Login-Popup-Fenster mit Selenium WebDriver um

Wie handhabt man das Login-Popup-Fenster mit Selenium Webdriver? Ich habe den Beispielbildschirm hier angehängt. Wie kann ich Benutzernamen und Passwort in dieses Anmeldefenster eingeben/eingeben?

Danke & Grüße, enter image description here

31
shiva oleti

Verwenden Sie den Ansatz, bei dem Sie Benutzername und Passwort in der URL-Anfrage senden:

http://username:[email protected]

Also nur um es klarer zu machen. Der Benutzername lautet username, das Kennwort ist password und der Rest ist die übliche URL Ihres Testwebs

Funktioniert für mich ohne irgendwelche Änderungen.

Beispiel-Java-Code:

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
Pavel Janicek

Dies sollte mit Windows Server 2012 und IE funktionieren.

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

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

alert.Accept();
8
Wahab Majboor

Lösung: Windows Active Directory-Authentifizierung mit Thread und Roboter

Ich habe Java Thread und Robot mit Selenium Webdriver verwendet, um den Windows Active Directory-Authentifizierungsprozess unserer Website zu automatisieren. Diese Logik hat in Firefox und Chrome gut funktioniert, aber im IE nicht funktioniert. Aus irgendeinem Grund tötet IE den Web-Treiber, wenn das Authentifizierungsfenster angezeigt wird, während Chrome und Firefox verhindern, dass der Web-Treiber getötet wird. Ich habe es nicht in einem anderen Webbrowser wie Safari versucht.

//...
//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);
        }                        
    }      
}

Dies ist in WebDriver 3.0 sehr einfach (ab sofort in Beta).

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

Hoffentlich hilft das.

Ich habe IE verwendet, dann Code so erstellt und arbeitet nach Änderung einiger 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
Shadi

Der folgende Java-Code für Selenium-Webdriver sollte für das Alert/Popup-Fenster gut geeignet sein:

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
Ripon Al Wasim

Wechseln Sie einfach zur Warnung und verwenden Sie authenticateUsing, um den Benutzernamen und das Kennwort festzulegen, und kehren Sie zum übergeordneten Fenster zurück

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

Der einfachste Weg, mit dem Authentifizierungs-Popup umzugehen, besteht darin, die Anmeldeinformationen in der URL selbst einzugeben. Zum Beispiel habe ich Anmeldeinformationen wie Username: admin und Password: admin:

WebDriver driver = new ChromeDriver();
driver.get("https://admin:[email protected] website url");
0
Raj

Auf diese Weise können Sie die Anmeldedaten mit der URL angeben. z.B. Wenn Ihre URL " http: // localhost: 4040 " lautet und bei der Eingabeaufforderungsnachricht "Benutzername" und "Passwort" gefragt werden, können Sie baseurl als " http: // Benutzername: Kennwort @ localhost: 4040 ". Hoffe es funktioniert

0
vikram k

Ich habe immer eine Windows-Sicherheitswarnung erhalten, wenn meine Anwendung geöffnet wurde. Um dieses Problem zu beheben, habe ich das folgende Verfahren angewendet 

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

dadurch wurde mein Problem mit dem Anmelden bei der Anwendung behoben. Ich hoffe, dass dies helfen kann, wer auf der Suche nach einer Windows-Sicherheitswarnung ist.

0
Srinu Seela

Besser Sie bevorzugen das Autoit-Tool, um alle Windows-Aktivitäten auszuführen. Sie können ein Skript mit dem Tool AutoIt erstellen, um Ihre Fensteraufgabe zu bearbeiten. Später kann dieses Exe mit Selenium ausgeführt werden. 

0
Arpan Saini

In C # Selenium Web Driver ist es mir gelungen, den folgenden Code zu verwenden:

var alert = TestDriver.SwitchTo().Alert();
alert.SendKeys(CurrentTestingConfiguration.Configuration.BasicAuthUser + Keys.Tab + CurrentTestingConfiguration.Configuration.BasicAuthPassword);
alert.Accept();

Obwohl es ähnlich scheint, funktionierte das Folgende nicht mit Firefox (Keys.Tab setzt das gesamte Formular zurück und das Passwort wird in das Benutzerfeld geschrieben):

alert.SendKeys(CurrentTestingConfiguration.Configuration.BasicAuthUser);
alert.SendKeys(Keys.Tab);
alert.SendKeys(CurrentTestingConfiguration.Configuration.BasicAuthPassword);

Ich habe auch folgende Lösung ausprobiert:

var alert = TestDriver.SwitchTo().Alert();
alert.SetAuthenticationCredentials(
   CurrentTestingConfiguration.Configuration.BasicAuthUser,
   CurrentTestingConfiguration.Configuration.BasicAuthPassword);

System.NotImplementedException: 'POST /session/38146c7c-cd1a-42d8-9aa7-1ac6837e64f6/alert/Berechtigungsnachweise haben nicht mit einem bekannten Befehl übereinstimmen '

0
Alexei

Dies ist eine Lösung für Python-basiertes Selenium, nachdem der Quellcode ( hier ) ..__ durchgegangen ist.

obj = driver.switch_to.alert
obj.send_keys(keysToSend="username\ue004password")
obj.accept()

Hier ist\ue004 der Wert für TAB, den Sie in der Klasse Keys im Quellcode finden.

Ich denke, dass derselbe Ansatz auch in Java verwendet werden kann, aber nicht sicher ist.

0
Devendra Bhat