Comment effectuer L'authentification de base pour FirefoxDriver, ChromeDriver et IEdriver dans Selenium WebDriver?

j'utilise la Selenium-Firefox-driver et Selenium-Chrome-Driver version 2.0a5 ( web Driver API ), et j'essaie de tester une application web qui a une authentification de base (il y a un popup qui vient pour authentifier l'utilisateur quand je frappe n'importe quelle page, le popup ne fait pas partie du HTML).

maintenant, j'ai besoin d'une stratégie pour authentifier l'utilisateur dans Firefox, Chrome et IE (je vais importer l'IE Pilote bientôt).

j'ai lu dans quelques articles que je peux définir un profil Firefox par exemple..quelque chose comme:

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("network.http.phishy-userpass-length", 255);
WebDriver driver = new FirefoxDriver(ffProfile);
driver.get("http://username:password@hostname");  

mais ça ne semble pas marcher pour moi. Quelqu'un a-t-il une solution efficace pour ces navigateurs?

36
demandé sur Ripon Al Wasim 2011-04-15 08:29:34

7 réponses

J'ai obtenu de travailler avec Firefox webdriver par le suivant:

profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);

driver.Navigate().GoToUrl("http://user:pwd@google.com");
10
répondu Rod 2012-10-05 22:47:14

certes, L'authentification HTTP de base n'est pas actuellement prise en charge, mais je l'ai fait fonctionner maintenant pour FF et pour Chrome.

le code que j'ai écrit dans les questions fonctionne pour ces pilotes. J'ai essayé le FF3.6 comme navigateur par défaut de Firefox (installé dans le dossier Firefox) au lieu de FF4 (pas encore pris en charge). Pour IE, je peux essayer de désactiver l'authentification par le biais de Registre de Windows.

cette page "" http://code.google.com/p/selenium/issues/detail?id=34 peut aider.

6
répondu sebarmeli 2011-04-19 00:12:16

ajouter ce nouveau profil Firefox sur votre code

ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("myProjectProfile"); //replace "myProjectProfile" with your profile"
WebDriver driver = new FirefoxDriver(myprofile);

paramètres de configuration de Firefox

cela fonctionne très bien sans demander aucune authentification lorsque vous faites les paramètres suivants..

  • Type " about: config "on your FF url
  • tapez maintenant " Proxy " dans le champ de recherche
  • assurez-vous " signon.autologin.proxy "est ensemble" vrai " (Par défaut il est "faux")

Load Default/Custom Chrome Profil pour exécuter des tests à l'aide de Sélénium WebDriver


  1. télécharger chromedriver.exe
  2. extraire le chromedriver_win_26.0.1383.0.zip Dossier et localisez .exe fichier dans C:/ dossier

ajouter ce Script sur votre code JAVA

DesiredCapabilities capability = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
capability.setCapability("chrome.switches", Arrays.asList("–disable-extensions"));
capability.setCapability("chrome.binary", "C:/Users/user_name/AppData/Local/Google/Chrome/Application/chrome.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default");
driver = new ChromeDriver(capability);

Note: IE n'a pas besoin de configuration de profil pour exécuter des tests car ils tournent sur L'utilisateur du serveur tandis que Firefox et Chrome fonctionnent avec du binaire.

3
répondu Prashanth Sams 2017-02-02 15:51:20

si vous voulez activer l'auteur http dans Internet explorer, vous devez éditer le registre et ajouter ceci (créer des clés si elles ne sont pas présentes):

  1. dans HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE , créer un DWORD iexplore.exe avec une valeur de 0

  2. dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE , créer un DWORD iexplore.exe avec une valeur de 0

  3. fermer et rouvrir Internet explorer

si vous avez un x64 IE, le chemin est un peu différent :

  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
2
répondu onionpsy 2013-11-19 13:19:31

pour plus de portabilité, ceci peut être manipulé par l'API du talon et en utilisant Alert .

exemple de code Java ( exemple ):

import org.openqa.selenium.Alert;
import org.openqa.selenium.security.Credentials;
public void authenticateUsing(Credentials credentials) {
    private final Alert alert;
    alert.authenticateUsing(credentials);
}

Voir aussi: auth_tests.py

ou en envoyant manuellement des clés comme:

SendKeys("user");
SendKeys("{TAB}");
SendKeys("password");
SendKeys("~"); // Enter

Voir aussi la demande de caractéristique suivante: #453 portable BASIC Auth at GitHub

Related:

2
répondu kenorb 2017-04-13 12:41:46

il existe une solution pour effectuer l'authentification avec le sélénium 1.x en définissant manuellement les en-têtes HTTP à http://mogotest.com/blog/2010/06/23/how-to-perform-basic-auth-in-selenium mais je ne pense pas que cela soit transférable au sélénium 2, car vous n'avez pas accès aux en-têtes.

Selon les informations de ici 'Authentification de Base de soutien pour le Sélénium 2" a été ajouté dans le Sélénium 2 Beta 2, mais à la recherche grâce au code source, Je ne peux le voir mis en œuvre que comme un moyen de sécuriser les serveurs de sélénium À Distance contre l'accès anonyme.

donc je pense que la réponse est que L'authentification HTTP de base n'est pas supportée actuellement.

1
répondu Naishy 2011-04-15 15:52:23

Je n'ai pas pu utiliser L'authentification basic avec Selenium 2 et Chrome (à cause d'un bug avec Chrome), j'ai donc créé une extension pour Chrome qui envoie automatiquement les informations d'authentification basic (voir https://chrome.google.com/webstore/detail/basic-authentication-auto/dgpgkkfheijbcgjklcbnokoleebmeokn ).

1
répondu Juan Lago 2013-08-10 20:32:54