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.
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.
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
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();