Как остановить Selenium от создания временных профилей Firefox с помощью веб-драйвера? - PullRequest
52 голосов
/ 22 июля 2011

Я использую Selenium Web Driver API с Java. Каждый раз, когда я хочу отладить свои тесты, в каталоге временных файлов создается временный профиль для Firefox. Это головная боль в двух отношениях.

  1. Определенно, это занимает ненужное время для создания профиля и занимает ненужное место.
  2. Я не могу установить надстройки, которые будут доступны при следующем запуске тестовых случаев.

Как мне обойти это?

Ответы [ 10 ]

31 голосов
/ 26 июля 2011

Вы можете контролировать, как драйвер Firefox выбирает профиль. Установите для свойства webdriver.firefox.profile имя профиля, который вы хотите использовать. Большинство людей думают, что это плохая идея, потому что вы унаследуете все куки, содержимое кэша, и т.д. . из предыдущего использования профиля, но это разрешено, если вы действительно хотите это сделать.

Например:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);

ОБНОВЛЕНИЕ - С Ранхиру

Как я справился с этим для Java

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

Затем я изменил настройки в Firefox, чтобы очистить все куки и кеш при выходе. Посмотрите здесь о том, как это сделать.

22 голосов
/ 26 мая 2015

Обязательно позвоните

driver.quit();

вместо

driver.close();

close () не удаляет временные файлы

3 голосов
/ 24 апреля 2012

Вы можете загрузить FirefoxWebDriver с необходимыми плагинами, вызвав метод addExtension(File) в FirefoxProfile class.

Пример:

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 голосов
/ 26 июля 2011

Ответ был довольно простым после того, как я прошел этот вопрос , где я нашел документацию. Я нашел класс FirefoxProfile, и конструктор взял путь к профилю Firefox.

WebDriver driver = null;
FirefoxProfile profile = new FirefoxProfile(new File("C:\\Users\\Ranhiru\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\qp1nizdo.Selenium"));
driver = new FirefoxDriver(profile);

Я создал новый профиль, запустив «Firefox.exe» с флагом -p .

Firefox.exe -p

Установил нужные мне расширения для этого профиля и мне было хорошо идти! :)

Обновление

Неважно, назначаете ли вы профиль или нет, тем не менее временный профиль во временной папке создается. Создавая и назначая профиль, вы получаете возможность использовать firebug / xpather / ваше любимое расширение при тестировании.

1 голос
/ 10 апреля 2013

Я создал собственный профиль, выполнив команду:

firefox -profileManager 

(затем добавление любых исключений и т. Д., Которые мне требуются - в связи с тем, что селен открывает чистый профиль / экземпляр каждый раз, когда исключения теряются)

Я тогда непосредственно создавал свой Firefox с этим профилем, используя следующее:

private static String profilePath = "C:\\fitnesse\\Selenesse\\FFProfiles";
private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); 
private static IWebDriver driver = new FirefoxDriver(ffprofile);
0 голосов
/ 29 апреля 2016

Вы всегда можете использовать профиль с именем default, который по умолчанию используется пользователем. Там у вас будут все ваши куки, плагины и т. Д., И вы сможете без проблем использовать его, используя

System.setProperty("webdriver.firefox.profile", "default");

перед созданием WebDriver

WebDriver driver = new FirefoxDriver();

для создания нового профиля, который вы можете выполнить в оболочке firefox -p, которая покажет вам

Add new profile to Firefox

и получите новый профиль помимо уже существующего default. Это даст вам всю свободу, которую вы хотите.

0 голосов
/ 07 мая 2015

вы можете указать другое местоположение для временных файлов до запуска программы, чтобы ваша программа не могла остановиться из-за "нехватки памяти"

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();
0 голосов
/ 09 июля 2014
  1. Запустите Firefox с: firefox -P
  2. Создание нового профиля (например, webdriver1), добавление необходимых плагинов и т. Д.
  3. Добавьте к вашему тестовому кейсу:

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    
0 голосов
/ 31 мая 2013

Вы не можете остановить Selenium от создания временных файлов, даже если вы явно указали один. Но вы можете очистить его после завершения испытаний.

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

Протестировано под MacOS и Ubuntu.

0 голосов
/ 22 июля 2011

Вы можете указать Selenium напрямую использовать определенный профиль. Вот один из примеров: http://automationtricks.blogspot.com/2010/05/how-to-run-test-cases-in-specified.html

...