Подтвердить что ты не робот

Как остановить Selenium от создания временных профилей Firefox с помощью Web Driver?

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

  • Это определенно занимает лишнее время для создания профиля и занимает ненужное пространство.
  • Я не могу установить какие-либо дополнения, которые будут доступны в следующий раз, когда я запустил свои тестовые примеры.

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

4b9b3361

Ответ 1

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

Например:

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

ОБНОВЛЕНИЕ - От Ranhiru

Как я обработал его для Java

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

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

Ответ 2

Убедитесь, что вы звоните

driver.quit();

вместо

driver.close();

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

Ответ 3

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

Пример:

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

Ответ 4

Ответ был довольно простым после того, как я прошел этот вопрос, где нашел документацию. Я нашел класс 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

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

Обновление

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

Ответ 5

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

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

Ответ 6

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

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

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

Ответ 7

  • Запустите firefox с помощью: firefox -P
  • Создайте новый профиль (например, webdriver1), добавьте необходимые плагины и т.д.
  • Добавьте к вашему тестовому примеру:

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    

Ответ 8

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

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

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

WebDriver driver = new FirefoxDriver();

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

Добавить новый профиль в Firefox

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

Ответ 10

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

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