web-dev-qa-db-fra.com

Comment gérer l'authentification contextuelle dans Chrome avec Selenium WebDriver à l'aide de Java

J'essaie de gérer une fenêtre contextuelle d'authentification dans l'un de mes nouveaux scripts Webdriver. J'ai une solution de travail pour IE, mais je me bats avec Chrome. IE était aussi simple que de suivre les conseils de [cette page]: Comment gérer l’authentification contextuelle avec Selenium WebDriver à l’aide de Java . Ce fil ne montre pas une excellente solution pour Chrome, bien que plusieurs commentateurs soulignent que la solution ne fonctionne pas pour Chrome. Le problème est que, lorsque vous essayez d'utiliser le code ci-dessous sous Chrome, la fenêtre de connexion ne constitue pas une alerte.

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

Ce n'est pas une fenêtre contextuelle d'authentification Windows (), la page Web est simplement protégée par un mot de passe. Je sais qu'il y a plusieurs autres exemples de cette question sur Stack Overflow, mais je ne vois pas plus récemment que 2 ans. J'espère qu'il y a une meilleure solution maintenant en 2017. Merci d'avance.

8
Travis Needham

* edit Chrome ne supporte plus cela.

N'est-ce pas une fenêtre contextuelle "restreinte" qui peut être gérée en ajoutant l'adresse à un nom d'utilisateur et un mot de passe?

Au lieu de driver.get("http://www.example.com/");, optez pour driver.get("http://username:[email protected]");.

3

Je sais que votre situation est Java, mais cela pourrait être utile. J'ai pu dépasser l'alerte en utilisant cette approche en C #: 

// I am using a static instance of the driver for this.
Driver.Instance.Navigate().GoToUrl(url);
var alert = Driver.Instance.SwitchTo().Alert();
alert.SendKeys($"{Driver.user_name}" + Keys.Tab + $"{Driver.user_password}" + Keys.Tab);
alert.Accept();
Driver.Instance.SwitchTo().DefaultContent();

J'ai ensuite utilisé un compte d'utilisateur test en tant que valeurs du nom d'utilisateur et du mot de passe.

0
joshmcode