Wie man Authentisierungspopup mit seleniumium WebDriver mit Java handhabt

Ich versuche, das Authentifizierungs-Popup mithilfe des folgenden Codes zu bearbeiten:

FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("network.http.phishy-userpass-length", 255); profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "xxxx"); driver = new FirefoxDriver(profile); baseUrl="http://" + login + ":" + password + "@" + url; driver.get(baseUrl + "/"); 

Wenn ich den Test durchführe, zeigt die Seite das Authentifizierungs-Popup und lädt noch immer, bis ich auf Abbrechen klicke. In diesem Moment kann ich auf die nächste Seite zugreifen, dies bedeutet, dass der Authentifizierungserfolg aber immer noch das Authentifizierungs-Popup anzeigt

Solutions Collecting From Web of "Wie man Authentisierungspopup mit seleniumium WebDriver mit Java handhabt"

Mit der Alert-Methode authenticateUsing() können Sie das Http Basic Authentication- Feld überspringen.

 WebDriverWait wait = new WebDriverWait(driver, 10); Alert alert = wait.until(ExpectedConditions.alertIsPresent()); alert.authenticateUsing(new UserAndPassword(username, password)); 

Ab seleniumium 3.4 ist es noch in der Betaversion

Momentan wird die Implementierung nur für InternetExplorerDriver

Verwenden Sie kein Firefox-Profil und versuchen Sie es mit dem folgenden Code:

 driver.get("http://UserName:Password@Example.com"); 

Wenn Sie es in IE-Browser implementieren, gibt es bestimmte Dinge, die Sie tun müssen.

Falls Ihr Authentifizierungsserver einen Benutzernamen mit der Domain “domainuser” benötigt, müssen Sie der URL den doppelten Schrägstrich / hinzufügen:

 //localdomain\user:password@example.com 

Ich habe dieses Problem in meiner Bewerbung mehrmals angesprochen.

Wir können das im Allgemeinen mit den folgenden 2 Ansätzen handhaben.

  1. Übergeben Sie den Benutzernamen und das Passwort in der URL selbst

  2. Sie können ein AutoIT-Skript erstellen und ein Skript aufrufen, bevor Sie die URL öffnen.

Bitte überprüfen Sie den folgenden Artikel, in dem ich beide Möglichkeiten erwähnt habe:
Behandeln Sie das Authentifizierungs- / Anmeldefenster in seleniumium Webdriver

Dies sollte mit dem AutoAuth Plugin für Firefox funktionieren :

 FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default"); File ffPluginAutoAuth = new File("D:\\autoauth-2.1-fx+fn.xpi"); firefoxProfile.addExtension(ffPluginAutoAuth); driver = new FirefoxDriver(firefoxProfile); 

Wenn Sie mit der NTLM-Proxy-Authentifizierung arbeiten müssen, ist es eine gute Alternative, einen lokalen Proxy mit CNTLM zu konfigurieren .

Die Anmeldeinformationen und die Domäne sind in /etc/cntlm.conf konfiguriert.

Danach können Sie einfach Ihren eigenen Proxy benutzen, der alle NTLM-Sachen behandelt.

 DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); proxy.setHttpProxy("localhost:3128"); capabilities.setCapability(CapabilityType.PROXY, proxy); driver = new ChromeDriver(capabilities); 

Versuchen Sie folgende Lösung und lassen Sie mich im Falle von Problemen wissen:

 driver.get('https://example.com/') driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password"); driver.switchTo().alert().accept(); 

Das funktioniert gut für mich