Comment empêcher Selenium de créer des profils Firefox temporaires en utilisant le pilote Web?

j'utilise L'API de pilote Web de sélénium 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. Ce est un mal de tête de deux façons.

  1. il est certain que cela prend du temps inutile pour créer un profil et de l'espace inutile.
  2. Je ne peux pas installer d'addons qui seront disponibles la prochaine fois que je lance mes cas de test.

Comment puis-je contourner ce problème?

48
demandé sur user861594 2011-07-22 11:49:57

10 réponses

vous pouvez contrôler comment le pilote Firefox choisit le profil. Définissez la propriété webdriver.firefox.profile au nom du profil que vous voulez utiliser. La plupart des gens pensent que c'est une mauvaise idée, parce que vous hériterez tous les cookies, contenu de cache, 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 - 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 dans Firefox pour effacer tous les cookies et le cache lors de la sortie. Regardez ici sur la façon de le faire.

31
répondu Ross Patterson 2017-05-23 10:31:00

n'oubliez pas d'appeler

driver.quit();

au lieu de

driver.close();

Fermer() ne supprimera pas les fichiers temporaires

19
répondu Szabolcs Filep 2015-05-25 23:37:27

la réponse a été en fait assez facile après que je suis passé par 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 lançant" Firefox.exe" avec le drapeau - p .

Firefox.exe -p

installé les extensions dont j'avais besoin pour ce profil et j'ai été bon aller! :)

mise à Jour

peu importe que vous assigniez un profil ou non, le profil temporaire dans le dossier temporaire est néanmoins créé. En créant et en assignant un profil vous obtenez la chance d'utiliser firebug/xpather/votre extension préférée lors des tests.

3
répondu Ranhiru Cooray 2017-05-23 12:34:54

vous pouvez charger le FirefoxWebDriver avec les plugins désiré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
répondu Kanishka Dilshan 2017-07-28 20:30:49

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

firefox -profileManager 

(en ajoutant ensuite toutes les exceptions etc I require-comme en raison de l'ouverture de sélénium profil propre / instance 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
répondu Woodman81 2016-06-09 13:23:06

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 pourrez l'effacer après les tests.

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

testé sous MacOS et Ubuntu.

0
répondu Max 2013-05-31 17:54:48
  1. Démarrer firefox avec: firefox-p
  2. créer un nouveau profil (par exemple webdriver1), ajouter les plugins nécessaires, etc.
  3. ajouter à votre étui 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
répondu ycnix 2014-07-09 09:54:55

Vous pouvez toujours utiliser le profil nommé default , qui est celui utilisé par défaut par l'utilisateur. Vous y trouverez 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 exécuter dans le shell firefox -p qui vous montrera

Add new profile to Firefox

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

0
répondu EliuX 2016-04-29 16:37:15

vous pouvez dire au sélénium d'utiliser un profil spécifique. Voici l'un des exemples: http://automationtricks.blogspot.com/2010/05/how-to-run-test-cases-in-specified.html

-1
répondu Pavel Janicek 2011-07-22 17:36:25

vous pouvez spécifier un emplacement différent pour les fichiers temporaires avant le début du programme, de sorte que votre programme ne peut pas s'arrêter en raison d'un "manque d'espace mémoire"

if(!new File("c:/temp_data").isDirectory())  //to check dir exist

    FileUtils.forceMkdir(new File("c:/temp_data")); //create dir if not exists    
    TemporaryFilesystem.setTemporaryDirectory(new File("c:/temp_data")); //set new dir as temp file path for selenium    
    FirefoxProfile profile = new FirefoxProfile();
-1
répondu vickisys 2016-03-23 07:40:34