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

J’utilise l’API de pilote Web Selenium avec Java. Chaque fois que je veux déboguer mes scénarios 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. Cela prend du temps inutile pour créer un profil et prend de la place inutile.
  2. Je ne peux pas installer des addons qui seront disponibles la prochaine fois que je lance mes cas de test.

Comment puis-je contourner cela?

Assurez-vous d’appeler

 driver.quit(); 

au lieu de

 driver.close(); 

close () ne supprimera pas les fichiers temporaires

Vous pouvez charger le FirefoxWebDriver avec les plug-ins souhaités en appelant la 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); 

La réponse a été assez facile après avoir parcouru 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 

Installé les extensions dont j’avais besoin pour ce profil et j’étais bien parti! 🙂

Mettre à jour

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

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

 firefox -profileManager 

(puis en ajoutant toutes les exceptions, etc., comme cela est nécessaire, car le selenium ouvre un profil / une instance propre chaque fois que des exceptions sont perdues)

Je créais alors directement mon Firefox avec ce profil en utilisant les éléments suivants:

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

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 le vider après les tests terminés.

 TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles() 

Testé sous MacOS et Ubuntu.

  1. Lancez Firefox avec: firefox -P
  2. Créer un nouveau profil (par exemple webdriver1), append les plugins nécessaires etc.
  3. Ajoutez à votre cas 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); 

Vous pouvez toujours utiliser le profil nommé default , qui est celui utilisé par défaut par l’utilisateur. Vous y trouverez tous vos cookies, plug-ins, etc. et vous pourrez les 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

Ajouter un nouveau profil à Firefox

et obtenir un nouveau profil en plus de la default existante. Cela vous donnera toute la liberté que vous voulez.

Vous pouvez indiquer directement à Selenium d’utiliser un profil spécifique. Voici l’un des exemples: http://automationsortingcks.blogspot.com/2010/05/how-to-run-test-cases-in-specified.html

vous pouvez spécifier un emplacement différent pour les fichiers temporaires avant le début du programme, afin que votre programme ne s’arrête pas 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();