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

40
demandé sur Ripon Al Wasim 2014-06-19 14:47:54

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

39
répondu Prashanth Sams 2017-07-06 08:14:29

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
26
répondu Raghav Arora 2017-08-25 04:44:13

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.

  1. Passer le nom d'utilisateur et le mot de passe dans l'url elle-même

  2. 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

5
répondu Mukesh Otwani 2015-07-03 14:19:24

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);
3
répondu Ripon Al Wasim 2016-03-10 15:44:13

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);
2
répondu cjungel 2016-10-06 19:32:52

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

2
répondu user6939 2018-05-11 09:20:43