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/име_на_профил.default/
- За Mac OS X > ~/Библиотека/Поддръжка на приложения/Firefox/Профили/име_на_профил.по подразбиране/
За да управлявате успешно Selenium Тест, а Firefox профилът трябва да бъде –
- Лесно е да се зареди
- Настройки на прокси, ако е необходимо
- Други специфични за потребителя настройки въз основа на нуждите от автоматизация
Как да зададете Firefox Профил за Selenium Тестове
Нека разгледаме стъпка по стъпка как да създадем Firefox профил.
Стъпка 1) Затвори Firefox браузър
В първата стъпка затворете Firefox ако вече е отворен. Мениджърът на профили няма да се стартира, докато Firefox прозорецът работи.
Стъпка 2) Open Run (Windows клавиш + R) и въведете firefox.exe –p
Диалоговият прозорец „Изпълнение“ трябва да изглежда като екранната снимка по-долу, преди да натиснете OK.
Забележка: Ако не се отвори, можете да опитате да използвате пълния път, ограден в кавички.
- На 32 бита Windows„C:\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, трябва да използваме вградения клас ProfilesIni на WebDriver и неговия метод 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Обектът с опции и обектът с опции се предава на драйвера.
- 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; |
| на нови FirefoxШофьор (моят профил) | опции.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 папката с данни за приложението и getProfile все още връща null, когато името не съвпада с профил, така че е добре да се добави проверка за null, преди да се стартира драйверът. Същият обект с опции съдържа и аргументите, използвани другаде, като например тези за максимизиране или преоразмеряване на прозореца на браузъра.
Как да зададете 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);
Предпочитанията по-долу обхващат случаите, които се срещат най-често в ежедневния скриптинг.
| Предпочитание | Какво контролира |
|---|---|
| браузър.изтегляне.списъкспапки | Задайте на 2, за да използвате персонализирана папка за изтегляне вместо системната по подразбиране. |
| браузър.изтегляне.dir | Абсолютният път Firefox запазва изтеглянията в. |
| browser.helperApps.neverAsk.saveToDisk | MIME типовете са запазени без показване на диалоговия прозорец за изтегляне. |
| dom.webnotifications.enabled | Задайте на „false“, за да потиснете подканите за уеб push известия. |
| intl.accept_languages | Заглавката Accept-Language, полезна за локализация. |
| общо.потребител.замяна | Заменя низа на потребителския агент, изпратен от браузъра. |
Струва си да се знаят две ограничения. Предпочитанията трябва да бъдат зададени преди създаването на драйвера, защото WebDriver копира профила при стартиране и по-късните промени се игнорират. WebDriver също така запазва малък набор от предпочитания, от които се нуждае, за да комуникира с браузъра, и презаписва тези, които зададете. Тъй като тези стойности се намират в профила, а не в скрипта, те също се пренасят през... кръстосано тестване на браузъра изпълнява се без никаква промяна в тестовия код.
Общ Firefox Грешки в профила в Selenium и как да ги поправим
Проблемите с профилите обикновено се проявяват като грешка при компилиране или като браузър, който се отваря с грешни настройки. Таблицата изброява най-често докладваните грешки, заедно с причините за всяка от тях.
| симптом | Причина | Фиксирайте |
|---|---|---|
| Конструкторът FirefoxШофьор(FirefoxПрофил) е неопределен | Конструкторът беше премахнат след Selenium 2. | Увийте профила вътре FirefoxОпции и вместо това предайте обекта с опции. |
| Не може да се разреши импортирането на org.openqa.selenium.firefox.internal.ProfilesIni | Класът се премести извън вътрешния подпакет. | Импортирайте org.openqa.selenium.firefox.ProfilesIni. |
| NullPointerException на getProfile | Името на профила не съвпада с никой запис в profiles.ini. | Отворете отново мениджъра на профили и копирайте името точно, включително главните и малките букви. |
| Вашият Firefox Профилът не може да бъде зареден. Възможно е да липсва или да е недостъпен. | Друг Firefox екземплярът вече съдържа профила или пътят до папката е грешен. | Затваряйте всеки Firefox прозорец, след което проверете пътя спрямо местоположенията, изброени по-горе. |
| Предпочитанието няма ефект | Зададено е след стартирането на драйвера или WebDriver го запазва. | Преместете всяко извикване на setPreference над FirefoxКонструктор на драйвери. |
Ако браузърът стартира правилно, но скриптът все още не работи след това, вероятно причината не е в профила. обработка на изключения в Selenium обикновено е по-бързият маршрут от тази точка.







