Comment gérer le popup d'authentification avec Selenium WebDriver en utilisant Java
j'essaie de gérer le popup d'authentification en utilisant le code ci-dessous:
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.http.phishy-userpass-length", 255);
profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x");
driver = new FirefoxDriver(profile);
baseUrl="http://" + login + ":" + password + "@" + url;
driver.get(baseUrl + "/");
lorsque j'exécute le test, la page affiche le popup d'authentification et charge toujours pour un jusqu'à ce que je clique sur le bouton Annuler. A ce moment, je peux accéder à la page suivante, cela signifie que le succès de l'authentification, mais toujours afficher le popup d'authentification
6 réponses
la méthode D'alerte, authenticateUsing()
permet de sauter la boîte authentification Http Basic .
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
Que de Sélénium 3.4 il est encore en version bêta
en ce moment la mise en œuvre n'est faite que pour
InternetExplorerDriver
N'utilisez pas le profil firefox et essayez le code ci-dessous:
driver.get("http://UserName:Password@Example.com");
si vous l'implémentez dans IE browser, il y a certaines choses que vous devez faire.
dans le cas où votre serveur d'authentification nécessite un nom d'utilisateur avec un domaine comme "domainuser" vous devez ajouter double barre oblique /
à l'url:
//localdomain\user:password@example.com
j'ai fait face à cette question à plusieurs reprises dans ma demande.
nous pouvons généralement gérer cela avec les 2 approches ci-dessous.
-
Passer le nom d'utilisateur et le mot de passe dans l'url elle-même
-
vous pouvez créer un Script AutoIT et appeler le script avant d'ouvrir l'url.
s'il vous Plaît vérifier ci-dessous l'article dans lequel j'ai mentionné deux façons:
fenêtre D'authentification de poignée dans le Webdriver de sélénium
cela devrait fonctionner pour Firefox en utilisant autoauth plugin :
FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default");
File ffPluginAutoAuth = new File("D:\autoauth-2.1-fx+fn.xpi");
firefoxProfile.addExtension(ffPluginAutoAuth);
driver = new FirefoxDriver(firefoxProfile);
si vous devez traiter avec L'authentification par procuration NTLM une bonne alternative est d'utiliser un mandataire Local configure en utilisant CNTLM .
les justificatifs d'identité et le domaine sont configurés dans /etc/cntlm.conf
.
après vous pouvez juste utiliser votre propre mandataire qui gère tous les trucs NTLM.
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Proxy proxy = new Proxy();
proxy.setHttpProxy("localhost:3128");
capabilities.setCapability(CapabilityType.PROXY, proxy);
driver = new ChromeDriver(capabilities);
essayez la solution suivante et faites-moi savoir en cas de problèmes:
driver.get('https://example.com/')
driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password");
driver.switchTo().alert().accept();
Cela fonctionne bien pour moi