Изменить настройки браузера

В предыдущем посте мы рассмотрели, как управлять действиями клавиатуры с помощью Selenium. Мы увидим, как мы можем настроить экземпляр WebDriver, передав ему параметры/возможности.

Варианты прохождения

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

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

Возможности

Возможности — это параметры, которые можно использовать для настройки и настройки сеанса WebDriver. Клиент может использовать возможности для указания необходимых функций при создании нового сеанса.

Список возможностей

  • имя браузера
  • browserVersion
  • название платформы
  • acceptInsecureCerts
  • pageLoadСтратегия
  • прокси
  • сетвиндоврект
  • тайм-ауты
  • необработанныйPromptBehavior

Помимо общих возможностей, существуют возможности конкретных поставщиков, такие как Возможности Firefox или Возможности Chrome.

Желаемые возможности

DesiredCapabilities — это класс, содержащий поддерживаемые по умолчанию желаемые возможности, которые можно использовать в качестве отправной точки для установки свойств браузеров.

Если сеанс не может поддерживать возможность, запрошенную в желаемых возможностях, ошибка не выдается; возвращается объект возможностей только для чтения, который указывает возможности, фактически поддерживаемые сеансом. [1]

Он хранит возможности в виде пар ключ-значение, и эти возможности используются для установки свойств браузера, таких как имя браузера, версия браузера и т. д.

Возможности, используемые сервером selenium для выбора браузера:

  • имя браузера
  • версия
  • платформа (это должна быть одна из WINDOWS, XP, VISTA, MAC, LINUX, UNIX, ANDROID или ЛЮБАЯ)

Возможности только для чтения:

  • handlesAlerts: может ли сеанс взаимодействовать с модальными всплывающими окнами, такими как предупреждения или запросы подтверждения.
  • cssSelectorsEnabled: поддерживает ли сеанс селекторы CSS при поиске элементов.

Возможности чтения-записи:

  • javascriptEnabled
  • база данных включена
  • locationContextEnabled
  • приложениеCacheEnabled
  • БраузерКоннектионенаблед
  • webStorageEnabled
  • принятьSslCerts
  • вращающийся
  • родные события
  • прокси
  • неожиданное поведение AlertBehaviour
  • elementScrollBehavior

Специальные возможности браузера

Возможности Chrome

API языка WebDriver предоставляет два способа передачи возможностей в ChromeDriver.

  1. ChromeOptions
  2. Желаемые возможности
options = ChromeOptions()
options.binary_location = "/path/to/other/chrome/binary"

В приведенном выше примере передается параметр start-maximized, чтобы открыть браузер в развернутом виде и включить возможность acceptInsecureCerts.

Возможности Firefox

Возможность moz:firefoxOptions — это набор возможностей с пространством имен, характерных для Firefox. Он используется для определения параметров, управляющих запуском и запуском Firefox. moz:firefoxOptions — это объект JSON, который может содержать любое из следующих полей:

  • двоичный файл: абсолютный путь к пользовательскому двоичному файлу Firefox для использования.
  • args: аргументы командной строки для передачи в двоичный файл Firefox, например headless
  • profile: ZIP-файл каталога профиля в кодировке Base64, который будет использоваться для экземпляра Firefox.
  • журнал: {“log": {"level": “trace"}}
  • prefs: сопоставление имени предпочтения со значением предпочтения. Вы можете получить доступ к полному списку доступных настроек, введя about:config в адресную строку.
  • env: сопоставление имени переменной среды со значением переменной среды.

Например, в следующем примере для параметра уровня журнала задается значение trace, для возможности acceptInsecureCerts значение True, а для параметра начальной страницы — https://www.google.com/ для браузера Firefox.

Рекомендуется всегда использовать .copy() для объекта DesiredCapabilities, чтобы избежать побочных эффектов изменения экземпляра глобального класса.

Ниже приведен пример из файла geckodriver.log.

1609433036588 geckodriver INFO Listening on 127.0.0.1:42171
1609433037604 mozrunner::runner INFO Running command: "/usr/bin/firefox" "--marionette" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofileO3LBqd"
1609433037606 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1:40321
1609433038400 Marionette TRACE Marionette enabled
1609433038517 Marionette TRACE Received observer notification toplevel-window-ready
console.warn: SearchSettings: "get: No settings file exists, new profile?" (new Error("", "(unknown module)"))
1609433041795 Marionette TRACE Received observer notification marionette-startup-requested
1609433041796 Marionette TRACE Waiting until startup recorder finished recording startup scripts...
1609433041864 Marionette TRACE All scripts recorded.
1609433041864 Marionette DEBUG Setting recommended pref apz.content_response_timeout to 60000
1609433041864 Marionette DEBUG Setting recommended pref browser.contentblocking.introCount to 99
1609433041865 Marionette DEBUG Setting recommended pref browser.download.panel.shown to true
1609433041865 Marionette DEBUG Setting recommended pref browser.pagethumbnails.capturing_disabled to true
1609433041865 Marionette DEBUG Setting recommended pref browser.tabs.disableBackgroundZombification to false
1609433041866 Marionette DEBUG Setting recommended pref browser.tabs.remote.separatePrivilegedContentProcess to false
1609433041866 Marionette DEBUG Setting recommended pref browser.tabs.unloadOnLowMemory to false
1609433041866 Marionette DEBUG Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false
1609433041866 Marionette DEBUG Setting recommended pref browser.toolbars.bookmarks.visibility to never
1609433041866 Marionette DEBUG Setting recommended pref browser.urlbar.suggest.searches to false
1609433041869 Marionette DEBUG Setting recommended pref datareporting.policy.dataSubmissionPolicyAccepted to false
1609433041869 Marionette DEBUG Setting recommended pref dom.disable_beforeunload to true

Вы можете настроить все виды предпочтений в браузерах с помощью опций и возможностей в соответствии с вашими потребностями.

То, что нужно запомнить

  • Вы можете настроить функции браузера, передав параметры или возможности экземпляру WebDriver.
  • Класс DesiredCapabilities хранит возможности в виде пар ключ-значение.
  • Используйте copy() для объекта DesiredCapabilities, прежде чем начать его изменять.

В следующем посте я напишу о событийном веб-драйвере.

Спасибо за уделенное время.

использованная литература

  1. https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities
  2. https://www.selenium.dev/documentation/en/driver_idiosyncrasies/shared_capabilities/
  3. https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/
  4. https://sites.google.com/a/chromium.org/chromedriver/capabilities
  5. https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
  6. https://www.guru99.com/desired-capabilities-selenium.html