Selenium Firefox Профіль: посібник із налаштування

⚡ Розумний підсумок

Firefox профіль зберігає закладки, паролі, доповнення та налаштування, що належать одному користувачеві браузера, і Selenium WebDriver може завантажувати спеціальний профіль, тому кожен автоматизований запуск починається з ідентичного, передбачуваного стану браузера.

  • 🔘 Основи профілю: A Firefox Профіль містить закладки, збережені паролі, доповнення, сертифікати та налаштування одного користувача в одній папці.
  • ☑️ Розташування профілю: Windows, Linux і macOS кожен зберігає папки профілю під іншим шляхом у каталозі користувача.
  • Створення профілю: Вбудований менеджер профілів відкривається командою firefox.exe -p та створює чистий профіль автоматизації за п'ять кроків.
  • 🧪 Code доступ: Клас ProfilesIni зчитує файл profiles.ini, а функція getProfile повертає іменований профіль як FirefoxОб'єкт профілю.
  • 🛠️ Поточний синтаксис: Selenium 3 та 4 протягують профіль крізь FirefoxOptions.setProfile, а не FirefoxКонструктор драйверів.
  • ⚠️ Уподобання: setPreference контролює папку завантажень, сповіщення, мову та обробку сертифікатів перед запуском браузера.

Selenium Firefox Посібник з налаштування профілю

Selenium Firefox профіль

Firefox профіль — це набір налаштувань, налаштувань, доповнень та інших налаштувань персоналізації, які можна виконати на Firefox Browser. Ви можете налаштувати Firefox відповідний профіль Selenium вимога автоматизації.

Крім того, Firefox або будь-який інший браузер обробляє налаштування сертифікатів SSL. Тому їх автоматизація має великий сенс разом із кодом виконання тесту.

Коротко кажучи, профіль – це особисті налаштування користувача. Якщо ви хочете запустити надійну автоматизація на Firefox браузері рекомендується створити окремий профіль. Спеціальний профіль також запобігає потраплянню ваших щоденних даних перегляду в тестовий режим, що є першим, що слід виключити, коли Selenium Скрипт поводиться по-різному на двох машинах.

Розташування папки вашого профілю на диску

Firefox профіль схожий на той, який використовують різні користувачі Firefox. Firefox зберігає особисту інформацію, таку як закладки, паролі та налаштування користувача, які можна редагувати, видаляти або створювати за допомогою менеджера профілів.

На знімку екрана нижче показано папку профілю, яка відображається на диску, названу на честь профілю з випадковим префіксом.

Firefox папка профілю, що відображається на диску, з її випадковим префіксом

Розташування профілю наступне

  • Для Windows > C:\Користувачі\ \AppData\Роумінг\Mozilla\Firefox\Профілі\назва_профілю.за замовчуванням
  • Для Linux > ~/.mozilla/firefox/ім'я_профілю.за замовчуванням/
  • Для Mac OS X > ~/Бібліотека/Підтримка програм/Firefox/Profiles/ім'я_профілю.за умовчанням/

Для успішного запуску Selenium Тест, а Firefox профіль має бути –

  • Легко для того щоб завантажити
  • Налаштування проксі, якщо потрібно
  • Інші параметри користувача залежно від потреб автоматизації

Як встановити Firefox Профіль для Selenium Випробування

Давайте розглянемо крок за кроком, як створити Firefox профіль.

Крок 1) Закрити Firefox браузер

На першому кроці закрийте Firefox якщо він вже відкритий. Менеджер профілів не запуститься, поки Firefox вікно працює.

Крок 2) Відкрити запуск (Windows клавіша + R) і введіть firefox.exe –p

Діалогове вікно «Виконати» має виглядати як на скріншоті нижче, перш ніж натиснути «ОК».

Windows Запустіть діалогове вікно за допомогою команди firefox.exe -p, введеної в

Примітка: Якщо воно не відкривається, спробуйте використати повний шлях у лапках.

  • На 32-бітній системі WindowsC:\Program Files\Mozilla Firefox\firefox.exe” –p
  • На 64-бітній системі Windows (32-бітний Firefox): «C:\Program Files (x86)\Mozilla» Firefox\firefox.exe” –p

Крок 3) Виберіть профіль користувача

Тепер діалогове вікно під назвою Firefox відкриється, як показано нижче.

Firefox Діалогове вікно «Вибір профілю користувача» зі списком існуючих профілів

Крок 4) Створити профіль

Виберіть опцію «Створити профіль», показану на наступному знімку екрана, щоб запустити майстер.

Екран привітання майстра створення профілів у Firefox менеджер профілів

Тепер у вікні виберіть опцію Створити профіль, і відкриється майстер. Натисніть далі.

Крок 5) Введіть назву свого профілю

Введіть назву профілю автоматизації у поле, виділене нижче, та завершіть роботу майстра.

Вхід у новий Firefox назва профілю в майстрі створення профілю

Тепер ваш профіль готовий, ви можете вибрати його та відкрити FirefoxЗвідси профіль поводиться як будь-який інший сеанс браузера, тому перший скрипт WebDriver працюватиме проти нього без змін.

Ви помітите, що новий Firefox у вікні не буде відображатися жодна з ваших закладок і значків вибраного.

Примітка: Останній вибраний профіль завантажиться автоматично наступного разу Firefox запуск. Вам потрібно буде перезапустити менеджер профілів, якщо ви хочете змінити профілі.

Скрипт автоматизації для Selenium

Після створення профілю наступним кроком є ​​його завантаження з коду. Щоб отримати доступ до щойно створеного Firefox профіль у Selenium Для тестування програмного забезпечення WebDriver нам потрібно використовувати вбудований клас WebDriver ProfilesIni та його метод getProfile, як показано нижче.

⚠️ Примітка до версії: Фрагменти в цьому розділі є оригінальними Selenium 2 форма. У поточному Selenium випускає, в якому живе клас org.openqa.selenium.firefox.ProfilesIni - .внутрішній підпакет було видалено — і профіль передається драйверу через FirefoxПараметри. Див. FirefoxРозділ опцій нижче для сучасного еквівалента.

Selenium код для профілю

Це код для реалізації профілю, який можна вбудувати в Selenium Код.

ProfilesIni profile = new ProfilesIni();

// це створить об'єкт для Firefox профіль

FirefoxProfile myprofile = profile.getProfile("xyzProfile");

// це ініціалізує Firefox водій

WebDriver driver = new FirefoxDriver(myprofile)

Давайте розглянемо реалізацію цього коду на наступних прикладах.

Firefox Приклад профілю 1

У першому прикладі завантажується профіль за іменем. На скріншоті нижче показано той самий скрипт у редакторі.

Firefox Приклад профілю 1 скрипт завантаження профілю за назвою в редакторі

// import the package
import java.io.File;
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
public class FirefoxProfile {
 	public static void main(String[] args) {
	ProfilesIni profile = new ProfilesIni();
	FirefoxProfile myprofile = profile.getProfile("xyzProfile");
// Initialize Firefox driver
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window
	driver.manage().window().maximize();
//Go to URL which you want to navigate
	driver.get("http://www.google.com");
//Set  timeout  for 5 seconds so that the page may load properly within that time
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser
	driver.close();
}

}

Пояснення до коду

Нижче наведено пояснення коду рядок за рядком.

  • Code рядок 2-7: Перш за все нам потрібно імпортувати пакет, необхідний для запуску Selenium Код.
  • Code рядок 8: Зробіть публічний клас “FirefoxПрофіль».
  • Code рядок 9: Створіть об'єкт (вам потрібні базові знання концепцій ООП).
  • Code рядок 10-11: Нам потрібно ініціалізувати Firefox профіль з об'єктом myprofile.
  • Code рядок 13: Створити об'єкт для Firefox.
  • Code рядок 15: Максимізувати вікно.
  • Code рядок 17: driver.get використовується для переходу до заданого URL.
  • Code Рядок 19: Встановлення таймауту використовується для очікування певного часу, щоб браузер міг завантажити сторінку, перш ніж перейти до наступної.
  • Code рядок 21: Закрити Firefox.

Давайте розглянемо ще один приклад.

Firefox Приклад профілю 2

У другому прикладі пропускається profiles.ini та вказується безпосередньо на папку профілю, як показано на знімку екрана редактора.

Firefox Приклад профілю 2 скрипт, що вказує FirefoxПрофіль за шляхом до папки

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;

public class FirefoxProfile2{
public static void main(String[] args) {

// Create object for FirefoxProfile
	FirefoxProfilemyprofile=newFirefoxProfile (newFile("\c:users\AppData\MozillaFirefoxProfile_name.default "));  
// Initialize Firefox driver    
	WebDriver driver = new FirefoxDriver(myprofile);
//Maximize browser window       
	driver.manage().window().maximize();
//Go to URL      
	driver.get("http://www.google.com");
//Set  timeout      
	driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//close firefox browser  
	driver.close();
    }

Пояснення до коду

Нижче наведено пояснення коду рядок за рядком.

  • Code рядок 1-6: Перш за все нам потрібно імпортувати пакет, необхідний для запуску Selenium Код.
  • Code рядок 8: Зробіть публічний клас FirefoxПрофіль2.
  • Code рядок 12: Створіть об'єкт myprofile, посилаючись на точний шлях.
  • Code рядок 14: Створити об'єкт для Firefox.
  • Code рядок 16: Максимізувати вікно.
  • Code рядок 18: driver.get використовується для переходу до заданого URL.
  • Code Рядок 20: Встановлення таймауту використовується для очікування певного часу, щоб браузер міг завантажити сторінку, перш ніж перейти до наступної.
  • Code рядок 22: Закрити Firefox.

Зверніть увагу, що шлях у цьому фрагменті написаний точно так, як показано в оригінальному посібнику. На реальній машині зворотні скісну риску потрібно екранувати, наприклад, «C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\Firefox\\Профілі\\xyzПрофіль.за замовчуванням”.

Як користуватися a Firefox профілі Selenium 4 з FirefoxОпції

Обидва наведені вище приклади компілюються лише з Selenium 2. Після цього змінилися дві речі, і кожен поточний навчальний посібник використовує новішу форму.

  • ProfilesIni переїхав з внутрішній підпакет, тому імпорт тепер має вигляд org.openqa.selenium.firefox.ProfilesIni.
  • Команда FirefoxВодій(FirefoxКонструктор профілю) було видалено. Профіль прикріплено до FirefoxОб'єкт options, і об'єкт options передається драйверу.
  • Selenium 4 тайм-аути приймають java.time.Duration замість значення плюс TimeUnit, тому implicitlyWait(5, TimeUnit.SECONDS) стає implicitlyWait(Duration.ofSeconds(5)).

У таблиці нижче кожен застарілий виклик зіставлено з його заміною.

Старий виклик (Selenium 2) Поточний дзвінок (Selenium 3 і 4)
імпорт org.openqa.selenium.firefox.internal.ProfilesIni; імпорт org.openqa.selenium.firefox.ProfilesIni;
new FirefoxВодій (мій профіль) options.setProfile(мійпрофіль); новий FirefoxДрайвер (опції)
неявноОчікування(5, ОдиницяЧасу.СЕКУНДИ) неявноОчікування(Тривалість.секунд(5))
System.setProperty для geckodriver Вирішено автоматично Selenium менеджер

Переписаний відповідно до поточної версії, Приклад 1 виглядає ось так.

import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.ProfilesIni;

public class FirefoxProfileSelenium4 {
    public static void main(String[] args) {
        ProfilesIni allProfiles = new ProfilesIni();
        FirefoxProfile myprofile = allProfiles.getProfile("xyzProfile");

        FirefoxOptions options = new FirefoxOptions();
        options.setProfile(myprofile);

        WebDriver driver = new FirefoxDriver(options);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
        driver.get("https://www.google.com");
        driver.quit();
    }
}

Сам пошук профілю не змінився: ProfilesIni все ще зчитує profiles.ini з Firefox папку application-data, а getProfile все одно повертає значення null, якщо ім'я не відповідає профілю, тому варто додати перевірку на значення null перед запуском драйвера. Той самий об'єкт options також містить аргументи, що використовуються в інших місцях, такі як ті, що використовуються для максимізація або зміна розміру вікна браузера.

Як встановити Firefox Налаштування профілю в Selenium

Збережений профіль – це лише половина справи. Більшість автоматизацій потребують кількох налаштувань, застосованих у коді, тому така сама поведінка застосовується до будь-якої машини. Метод setPreference записує ці значення в копію профілю перед... Firefox запускає.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\selenium-downloads");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
profile.setPreference("dom.webnotifications.enabled", false);
profile.setPreference("intl.accept_languages", "es");

FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);

Наведені нижче налаштування охоплюють випадки, які найчастіше виникають у щоденному написанні сценаріїв.

Перевагу Що воно контролює
browser.download.folderList Встановіть значення 2, щоб використовувати власну папку завантажень замість системної за замовчуванням.
браузер.каталог_завантаження Абсолютний шлях Firefox зберігає завантаження в.
browser.helperApps.neverAsk.saveToDisk MIME-типи збережено без відображення діалогового вікна завантаження.
dom.webnotifications.enabled Встановіть значення «false», щоб придушити запити на веб-push-сповіщення.
міжнародні_мовні_програми Заголовок Accept-Language, корисний для запуску локалізації.
загальний.корисний.замінити Замінює рядок агента користувача, надісланий браузером.

Варто знати два обмеження. Налаштування необхідно встановити перед створенням драйвера, оскільки WebDriver копіює профіль під час запуску, а пізніші зміни ігноруються. WebDriver також резервує невеликий набір налаштувань, необхідних для взаємодії з браузером, і перезаписує їх тими, що ви призначите. Оскільки ці значення знаходяться в профілі, а не в скрипті, вони також переносяться через кросбраузерне тестування запустити без будь-яких змін у тестовому коді.

загальний Firefox Помилки профілю в Selenium і як їх виправити

Проблеми з профілем зазвичай проявляються як помилка компіляції або як відкривається браузер з неправильними налаштуваннями. У таблиці перелічені найчастіше повідомляні помилки, а також причини кожної з них.

симптом Викликати виправляти
Конструктор FirefoxВодій(FirefoxПрофіль) не визначено Конструктор було видалено після Selenium 2. Загорніть профіль всередину FirefoxПараметри та передайте об'єкт options замість них.
Не вдається вирішити імпорт org.openqa.selenium.firefox.internal.ProfilesIni Клас вийшов за межі внутрішнього підпакета. Імпортувати org.openqa.selenium.firefox.ProfilesIni.
NullPointerException на getProfile Ім'я профілю не відповідає жодному запису у файлі profiles.ini. Знову відкрийте менеджер профілів і скопіюйте ім'я точно, включаючи регістр літер.
вашу Firefox Не вдалося завантажити профіль. Можливо, він відсутній або недоступний. Інший Firefox Екземпляр вже містить профіль, або шлях до папки неправильний. Закривати кожні Firefox вікно, а потім перевірте шлях у розташуваннях, перелічених вище.
Уподобання не мають жодного ефекту Його було встановлено після запуску драйвера, або WebDriver резервує його. Перемістити кожен виклик setPreference вище FirefoxКонструктор драйверів.

Якщо браузер запускається правильно, але після цього скрипт все одно не працює, причиною, ймовірно, є не профіль. обробка винятків у Selenium зазвичай це швидший маршрут з цієї точки.

Поширені запитання

Ні. FirefoxDriver ніколи не редагує вже існуючий профіль. Він копіює каталог профілю у тимчасове місце, застосовує налаштування, необхідні WebDriver, і запускає браузер з цієї копії, тому ваші збережені закладки та паролі залишаються недоторканими.

Так. Будь-яке розширення, встановлене в профілі, завантажується разом із браузером. Ви також можете викликати profile.addExtension(new File(“шлях/до/розширення.xpi”)), щоб додати його під час виконання, що збереже профіль на диску чистим.

Python не має еквівалента ProfilesIni. Точка FirefoxПрофіль у каталозі профілів, а потім призначте його options.profile перед збиранням драйвера. Selenium Python зв'язки, а потім клонують цю папку точно так само, як Java робить.

Інструменти тестування на основі штучного інтелекту порівнюють налаштування, отримані під час успішних запуску, з поточним профілем та дрейфом прапорців, такими як проксі-сервер або папка завантажень, що змінилися. Деякі фреймворки також використовують машинне навчання для виявлення нестабільності, пов'язаної з профілем, перш ніж збірка завершиться невдачею.

Копілот GitHub швидко генерує шаблон, але часто видаляє видалений FirefoxВодій(FirefoxКонструктор профілю), отриманий зі старого коду. Завжди перевіряйте використання запропонованих параметрів. FirefoxOptions.setProfile та поточний пакет перед його фіксацією.

Так. Викличте options.addArguments(“-headless”) разом із options.setProfile(profile). Профіль надає налаштування та розширення точно так само, як і раніше, оскільки режим headless змінює лише те, як Firefox рендерить, а не те, як він читає свій каталог профілю.

Оскільки WebDriver працює з тимчасовою копією та видаляє її після завершення сеансу. Щоб зберегти зміни, відредагуйте профіль вручну в менеджері профілів або встановіть параметри в коді, щоб кожен запуск починався з одного й того ж відомого стану.

Не завжди, але допомагає. Прикріплення профілю до FirefoxПараметри постачаються з корисним навантаженням можливостей, тому віддалений вузол застосовує ту саму папку завантажень, проксі-сервер та обробку сертифікатів, що й ваш локальний комп'ютер.

Підсумуйте цей пост за допомогою: