web-dev-qa-db-fra.com

Comment gérer l’authentification popup avec Selenium WebDriver en utilisant Java

J'essaie de gérer l'authentification popup 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 menu contextuel d'authentification et continue de se charger jusqu'à ce que je clique sur le bouton Annuler. A ce moment-là, je peux accéder à la page suivante, cela signifie que l'authentification a réussi mais que toujours afficher la fenêtre d'authentification

48
Imen CHOK

La méthode d’alerte, authenticateUsing() vous permet d’ignorer la zone Authentification de base Http .

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

À partir de Selenium 3.4 , il est toujours en version bêta.

Actuellement, l'implémentation n'est faite que pour InternetExplorerDriver

40
Prashanth Sams

N'utilisez pas le profil firefox et essayez le code ci-dessous:

driver.get("http://UserName:[email protected]");

Si vous l'implémentez dans le navigateur IE, vous devez faire certaines choses.

Si votre serveur d'authentification requiert un nom d'utilisateur avec un domaine tel que "domainuser", vous devez ajouter une double barre oblique / à l'URL:

//localdomain\user:[email protected]
30
Raghav Arora

Essayez la solution suivante et faites-le moi savoir en cas de problème:

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

Cela fonctionne bien pour moi

7
user6939

J'ai fait face à ce problème à plusieurs reprises dans ma candidature.

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 un script d'appel avant d'ouvrir l'URL.

S'il vous plaît vérifier l'article ci-dessous dans lequel j'ai mentionné les deux manières:
Fenêtre Gestion de l’authentification/connexion dans Selenium Webdriver

7
Mukesh Otwani

Cela devrait fonctionner pour Firefox en utilisant plugin AutoAuth :

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

Si vous devez traiter avec l'authentification de proxy NTLM, une bonne alternative consiste à utiliser un proxy local à l'aide de CNTLM .

Les informations d'identification et le domaine sont configurés dans /etc/cntlm.conf.

Ensuite, vous pouvez simplement utiliser votre propre proxy qui gère tout le matériel NTLM.

DesiredCapabilities capabilities = DesiredCapabilities.chrome();

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

driver = new ChromeDriver(capabilities);
2
cjungel