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
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
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]
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
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.
Passer le nom d'utilisateur et le mot de passe dans l'URL elle-même
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
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);
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);