Selenium Firefox Профиль: Руководство по установке

⚡ Умное резюме

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

  • 🔘 Основные сведения о профиле: A Firefox В папке profile хранятся закладки одного пользователя, сохраненные пароли, дополнения, сертификаты и настройки.
  • ☑️ Местоположение профиля: WindowsLinux и macOS Папки профилей каждого пользователя хранятся по разным путям внутри пользовательского каталога.
  • Создание профиля: Встроенный менеджер профилей запускается командой firefox.exe -p и создает чистый профиль автоматизации за пять шагов.
  • 🧪 Code доступ: Класс ProfilesIni считывает файл profiles.ini, а метод getProfile возвращает указанный профиль в качестве параметра. FirefoxОбъект профиля.
  • 🇧🇷 Текущий синтаксис: Selenium 3 и 4 передают профиль дальше FirefoxВместо Options.setProfile FirefoxКонструктор драйверов.
  • ⚠️ Предпочтения: Функция setPreference управляет папкой загрузок, уведомлениями, языком и обработкой сертификатов до запуска браузера.

Selenium Firefox Руководство по настройке профиля

Selenium Firefox Профиль

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

Таким образом, Firefox или любой другой браузер обрабатывает настройки сертификатов SSL. Поэтому их автоматизация имеет большой смысл вместе с кодом выполнения тестов.

Вкратце, профиль — это личные настройки пользователя. Когда вы хотите запустить надежный сервис... автоматизация на Firefox При использовании любого браузера рекомендуется создать отдельный профиль. Специальный профиль также исключает из тестового запуска данные о вашей повседневной работе в браузере, что является первым, что следует исключить при тестировании. Selenium Скрипт ведет себя по-разному на двух машинах.

Расположение папки вашего профиля на диске

Firefox профиль похож на то, как разные пользователи используют 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

Перед нажатием кнопки ОК диалоговое окно «Выполнить» должно выглядеть так, как на скриншоте ниже.

Windows В диалоговом окне запуска введите команду 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 откроется, как показано ниже.

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: Параметр set timeout используется для ожидания некоторого времени, чтобы браузер мог загрузить страницу, прежде чем перейти к следующей странице.
  • 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: Параметр 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 Обычно оттуда проложить более быстрый маршрут.

Часто задаваемые вопросы (FAQ)

№ FirefoxДрайвер никогда не редактирует существующий профиль. Он копирует каталог профиля во временное местоположение, применяет необходимые настройки WebDriver и запускает браузер из этой копии, поэтому ваши сохраненные закладки и пароли остаются нетронутыми.

Да. Любое расширение, установленное в профиле, загружается вместе с браузером. Вы также можете вызвать profile.addExtension(new File(“path/to/extension.xpi”)), чтобы добавить его во время выполнения, что позволит поддерживать чистоту профиля на диске.

Python Аналога ProfilesIni не существует. FirefoxПрофилирование следует выполнять в каталоге профилирования, а затем присвоить его файлу options.profile перед сборкой драйвера. Selenium Python Затем клонируйте эту папку точно так, как указано в привязках. Java делает.

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

Второй пилот GitHub Генерирует шаблонный код быстро, но часто выдает удаленный результат. FirefoxВодитель(FirefoxКонструктор Profile был заимствован из более старого кода. Всегда проверяйте, используется ли предложенный вариант. FirefoxПеред фиксацией изменений используйте параметры Options.setProfile и укажите текущий пакет.

Да. Вызовите options.addArguments("-headless") вместе с options.setProfile(profile). Профиль предоставляет настройки и расширения точно так же, как и раньше, поскольку безголовый режим изменяет только способ работы. Firefox Отображает данные, а не то, как считывает каталог профиля.

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

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

Подведем итог этой публикации следующим образом: