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.
- il est certain que cela prend du temps inutile pour créer un profil et de l'espace inutile.
- 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?
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.
n'oubliez pas d'appeler
driver.quit();
au lieu de
driver.close();
Fermer() ne supprimera pas les fichiers temporaires
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.
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);
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);
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.
- Démarrer firefox avec: firefox-p
- créer un nouveau profil (par exemple webdriver1), ajouter les plugins nécessaires, etc.
-
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);
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
et obtenir un nouveau profil en plus du déjà existant default
. Cela vous donnera toute la liberté que vous voulez.
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
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();