web-dev-qa-db-fra.com

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?

52
Ranhiru Jude Cooray

Vous pouvez contrôler la façon dont le pilote Firefox choisit le profil. Met le webdriver.firefox.profile propriété au nom du profil que vous souhaitez utiliser. La plupart des gens pensent que c'est une mauvaise idée, car vous hériterez de tous les cookies, du contenu du cache, etc. des utilisations précédentes du profil, mais c'est autorisé si vous voulez vraiment le faire.

Par exemple:

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

[~ # ~] mise à jour [~ # ~] - De Ranhir

Comment je l'ai géré pour Java

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

J'ai ensuite modifié les paramètres de Firefox pour effacer tous les cookies et le cache lors de la fermeture. Regardez ici sur la façon de le faire.

31
Ross Patterson

Assurez-vous d'appeler

driver.quit();

au lieu de

driver.close();

close () ne supprimera pas les fichiers temporaires

22
Szabolcs Filep

La réponse était en fait assez facile après avoir traversé cette question où j'ai trouvé la documentation. J'ai trouvé la classe FirefoxProfile et le constructeur a pris le chemin du 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 exécutant "Firefox.exe" avec l'indicateur - p .

Firefox.exe -p

J'ai installé les extensions dont j'avais besoin pour ce profil et j'étais prêt à partir! :)

Mise à jour

Peu importe que vous affectiez ou non un profil, le profil temporaire dans le dossier temporaire est néanmoins créé. En créant et en attribuant un profil, vous avez la possibilité d'utiliser firebug/xpather/votre extension préférée lors des tests.

3
Ranhiru Jude Cooray

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

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);
3
Kanishka Dilshan

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

firefox -profileManager 

(puis en ajoutant toutes les exceptions, etc. dont j'ai besoin - car en raison de l'ouverture par Selenium d'un profil/d'une instance propre à chaque fois que les exceptions sont perdues)

Je créais alors directement mon Firefox avec ce profil en utilisant ce qui suit:

private static String profilePath = "C:\\fitnesse\\Selenesse\\FFProfiles";
private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); 
private static IWebDriver driver = new FirefoxDriver(ffprofile);
1
Woodman81

Vous pouvez toujours utiliser le profil nommé default, qui est celui utilisé par défaut par l'utilisateur. Là, vous aurez tous vos cookies, plugins, etc. et vous pourrez l'utiliser sans complications, en utilisant

System.setProperty("webdriver.firefox.profile", "default");

avant de créer le WebDriver

WebDriver driver = new FirefoxDriver();

pour créer un nouveau profil, vous pouvez l'exécuter dans le shell firefox -p qui vous montrera

Add new profile to Firefox

et obtenez un nouveau profil en plus du default déjà existant. Cela vous donnera toute la liberté que vous souhaitez.

0
EliuX

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.

0
Max
  1. Démarrez Firefox avec: Firefox -P
  2. Créez un nouveau profil (par exemple, webdriver1), ajoutez les plugins nécessaires, etc.
  3. Ajoutez à votre scénario de test:

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    
0
jnr