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

Selenium Firefox профіль
Firefox профіль — це набір налаштувань, налаштувань, доповнень та інших налаштувань персоналізації, які можна виконати на Firefox Browser. Ви можете налаштувати Firefox відповідний профіль Selenium вимога автоматизації.
Крім того, Firefox або будь-який інший браузер обробляє налаштування сертифікатів SSL. Тому їх автоматизація має великий сенс разом із кодом виконання тесту.
Коротко кажучи, профіль – це особисті налаштування користувача. Якщо ви хочете запустити надійну автоматизація на Firefox браузері рекомендується створити окремий профіль. Спеціальний профіль також запобігає потраплянню ваших щоденних даних перегляду в тестовий режим, що є першим, що слід виключити, коли Selenium Скрипт поводиться по-різному на двох машинах.
Розташування папки вашого профілю на диску
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
Діалогове вікно «Виконати» має виглядати як на скріншоті нижче, перш ніж натиснути «ОК».
Примітка: Якщо воно не відкривається, спробуйте використати повний шлях у лапках.
- На 32-бітній системі WindowsC:\Program Files\Mozilla Firefox\firefox.exe” –p
- На 64-бітній системі Windows (32-бітний Firefox): «C:\Program Files (x86)\Mozilla» Firefox\firefox.exe” –p
Крок 3) Виберіть профіль користувача
Тепер діалогове вікно під назвою Firefox відкриється, як показано нижче.
Крок 4) Створити профіль
Виберіть опцію «Створити профіль», показану на наступному знімку екрана, щоб запустити майстер.
Тепер у вікні виберіть опцію Створити профіль, і відкриється майстер. Натисніть далі.
Крок 5) Введіть назву свого профілю
Введіть назву профілю автоматизації у поле, виділене нижче, та завершіть роботу майстра.
Тепер ваш профіль готовий, ви можете вибрати його та відкрити 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
У першому прикладі завантажується профіль за іменем. На скріншоті нижче показано той самий скрипт у редакторі.
// 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 та вказується безпосередньо на папку профілю, як показано на знімку екрана редактора.
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 зазвичай це швидший маршрут з цієї точки.







