53 votes

Comment empêcher Selenium de créer des profils Firefox temporaires à l'aide du pilote Web?

J'utilise l'API Selenium Web Driver avec Java. Chaque fois que je veux déboguer mes cas de test, un profil temporaire pour Firefox est créé dans le répertoire des fichiers temporaires. C'est un mal de tête de deux manières.

  1. Il faut certainement du temps inutile pour créer un profil et prendre de l'espace inutile.
  2. Je ne peux installer aucun module complémentaire qui sera disponible la prochaine fois que je lancerai mes scénarios de test.

Comment puis-je contourner cela?

31voto

Ross Patterson Points 6512

Vous pouvez contrôler la façon dont Firefox pilote choisit le profil. Définir l' webdriver.firefox.profile de la propriété du nom du profil que vous souhaitez utiliser. La plupart des gens pense que c'est une mauvaise idée, parce que vous allez hériter de tous les cookies, le cache de contenu, etc. des utilisations antérieures du profil, mais il est permis si vous voulez vraiment le faire.

Par exemple:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);

Mise à JOUR - à Partir de Ranhiru

Comment j'ai géré ça pour Java

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

Puis j'ai changé les paramètres de Firefox pour effacer tous les cookies et le cache lors de la sortie. Regarde ici comment faire.

3voto

Kanishka Dilshan Points 413

Vous pouvez charger FirefoxWebDriver avec les plugins souhaités en appelant la méthode addExtension (File) dans la classe FirefoxProfile.

par exemple

     try {
      File firebug = new File("C:\\FFPlugins\\firebug-1.7.3.xpi");
      File xpathChecker = new File("C:\\FFPlugins\\xpath_checker-0.4.4-fx.xpi");
      profile.addExtension(firebug);
      profile.setPreference("extensions.firebug.currentVersion", "1.7.3");
      profile.addExtension(xpathChecker);
      profile.setPreference("extensions.xpath_checker.currentVersion", "0.4.4");
    } catch(IOException e) {
      e.printStackTrace();
    }
    driver = new FirefoxDriver(profile);
 

:)

3voto

Ranhiru Cooray Points 9301

La réponse est en fait assez facile, après je suis passé par cette question où j'ai trouvé de la documentation. J'ai trouvé l' FirefoxProfile de la classe et le constructeur a pris le chemin d'accès au Profil Firefox.

WebDriver driver = null;
FirefoxProfile profile = new FirefoxProfile(new File("C:\\Users\\Ranhiru\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\qp1nizdo.Selenium"));
driver = new FirefoxDriver(profile);

J'ai créé un nouveau profil en cours d'exécution "Firefox.exe" avec le p- drapeau.

Firefox.exe -p

Installé les extensions j'avais besoin de ce profil et que j'étais bon pour aller! :)

Mise à jour

Il n'a pas d'importance si vous affectez un profil ou pas, le profil temporaire dans le dossier temp est créé, tout de même. Par la création et l'affectation d'un profil vous avez la chance d'utiliser firebug/xpather/votre extension préférée lors de l'essai.

1voto

Woodman81 Points 28

J'ai créer un profil personnalisé en exécutant la commande:

firefox -profileManager (puis en ajoutant des exceptions, etc j'ai besoin - comme en raison de sélénium ouverture propre profil/exemple à chaque fois que les exceptions sont perdus)

J'ai été ensuite directement à la création de mon Firefox avec ce profil à l'aide des éléments suivants:

private static String profilePath = "C:\fitnesse\Selenesse\FFProfiles";

private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath);

private static IWebDriver pilote = new FirefoxDriver(ffprofile);

0voto

Max Points 272

Vous ne pouvez pas empêcher Selenium de créer des fichiers temporaires même si vous en avez explicitement spécifié un. Mais vous pouvez l'effacer une fois les tests terminés.

 TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()
 

Testé sous MacOS et Ubuntu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X