Selenium Firefox Профиль: Руководство по установке
⚡ Умное резюме
Firefox В профиле хранятся закладки, пароли, дополнения и настройки, принадлежащие одному пользователю браузера. Selenium WebDriver может загружать специальный профиль, благодаря чему каждый автоматизированный запуск начинается с идентичного, предсказуемого состояния браузера.
Selenium Firefox Профиль
Firefox Профиль — это набор настроек, настроек, надстроек и других настроек персонализации, которые можно выполнить на Firefox Browser. Вы можете настроить Firefox профиль, соответствующий вашему Selenium требование автоматизации.
Таким образом, Firefox или любой другой браузер обрабатывает настройки сертификатов SSL. Поэтому их автоматизация имеет большой смысл вместе с кодом выполнения тестов.
Вкратце, профиль — это личные настройки пользователя. Когда вы хотите запустить надежный сервис... автоматизация на Firefox При использовании любого браузера рекомендуется создать отдельный профиль. Специальный профиль также исключает из тестового запуска данные о вашей повседневной работе в браузере, что является первым, что следует исключить при тестировании. Selenium Скрипт ведет себя по-разному на двух машинах.
Расположение папки вашего профиля на диске
Firefox профиль похож на то, как разные пользователи используют Firefox. Firefox Сохраняет личную информацию, такую как закладки, пароли и пользовательские настройки, которые можно редактировать, удалять или создавать заново с помощью менеджера профилей.
На скриншоте ниже показана папка профиля в том виде, в котором она находится на диске, названная в честь профиля со случайным префиксом.
Расположение профиля следующее
- Для пакетов Windows > C:\Users\ \AppData\Roaming\Mozilla\Firefox\Profiles\profile_name.default
- Для пакетов Linux > ~/.mozilla/firefox/profile_name.default/
- Для Mac OS X > ~/Library/Application Support/Firefox/Профили/имя_профиля.default/
Чтобы провести успешный Selenium Тест, а Firefox профиль должен быть –
- Легко для того чтобы загрузить
- Настройки прокси при необходимости
- Другие пользовательские настройки, основанные на потребностях автоматизации.
Как установить Firefox Профиль для Selenium Tests
Давайте шаг за шагом рассмотрим, как это создать. Firefox профиль.
Шаг 1) Закрой Firefox браузер
На первом этапе закройте Firefox Если он уже открыт, менеджер профилей не запустится, пока он открыт. Firefox Окно запущено.
Шаг 2) Открытый забег (Windows клавиша + R) и введите firefox.exe –p
Перед нажатием кнопки ОК диалоговое окно «Выполнить» должно выглядеть так, как на скриншоте ниже.
Примечание: Если файл не открывается, попробуйте указать полный путь в кавычках.
- На 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 нам необходимо использовать встроенный в 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: Параметр set timeout используется для ожидания некоторого времени, чтобы браузер мог загрузить страницу, прежде чем перейти к следующей странице.
- 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: Параметр set timeout используется для ожидания некоторого времени, чтобы браузер мог загрузить страницу, прежде чем перейти к следующей странице.
- Code строка 22: Закрыть Firefox.
Обратите внимание, что путь в этом фрагменте кода написан точно так, как показано в оригинальном руководстве. На реальном компьютере обратные косые черты необходимо экранировать, например, «C:\\Users\\guru99\\AppData\\Roaming\\Mozilla\\».Firefox\\Profiles\\xyzProfile.default”.
Как использовать Firefox Профили в Selenium 4 с FirefoxПараметры
Оба приведенных выше примера компилируются только с использованием Selenium 2. Впоследствии произошли два изменения, и во всех современных руководствах используется новая версия.
- ProfilesIni переехала из в нашей внутренней среде, подпакет, поэтому теперь импорт выглядит так: org.openqa.selenium.firefox.ProfilesIni.
- FirefoxВодитель(FirefoxКонструктор Profile был удален. Профиль прикреплен к FirefoxОбъект параметров передается драйверу.
- Selenium 4 таймаута принимают java.time.Duration вместо значения плюс TimeUnit, поэтому implicitlyWait(5, TimeUnit.SECONDS) становится implicitlyWait(Duration.ofSeconds(5)).
В таблице ниже приведено соответствие каждого устаревшего вызова его замене.
| Призыв к наследию (Selenium 2) | Текущий вызов (Selenium 3 и 4) |
|---|---|
| import org.openqa.selenium.firefox.internal.ProfilesIni; | import org.openqa.selenium.firefox.ProfilesIni; |
| новый FirefoxDriver(myprofile) | options.setProfile(myprofile); new FirefoxДрайвер(опции) |
| implicitlyWait(5, TimeUnit.SECONDS) | implicitlyWait(Duration.ofSeconds(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, чтобы использовать пользовательскую папку для загрузок вместо папки по умолчанию, используемой системой. |
| browser.download.dir | Абсолютный путь Firefox сохраняет загруженные файлы в. |
| браузер.helperApps.neverAsk.saveToDisk | MIME-типы сохранены без отображения диалогового окна загрузки. |
| dom.webnotifications.включено | Установите значение false, чтобы подавить запросы на отправку push-уведомлений в веб-браузере. |
| intl.accept_languages | Заголовок Accept-Language полезен для выполнения локализационных операций. |
| общий.useragent.override | Заменяет строку пользовательского агента, отправленную браузером. |
Стоит знать о двух ограничениях. Настройки необходимо задать до создания драйвера, поскольку 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 Обычно оттуда проложить более быстрый маршрут.







