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.
Comment puis-je contourner cela?
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.
Assurez-vous d'appeler
driver.quit();
au lieu de
driver.close();
close () ne supprimera pas les fichiers temporaires
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.
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);
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);
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
et obtenez un nouveau profil en plus du default
déjà existant. Cela vous donnera toute la liberté que vous souhaitez.
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.
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);