Настройка пользовательского агента в Firefox с помощью geckodriver v0.11

Я работаю над обновлением наших тестов селена для работы с Firefox v50.x, поэтому мне нужно сделать их совместимыми с geckodriver v0.11.

Теперь кажется, что теперь инициализация веб-драйвера с использованием Firefox:: Profile приводит к сбою веб-драйвера, поскольку он не распознает ни одно из полей, установленных в профиле:

ArgumentError
unknown option: {:profile=>#<Selenium::WebDriver::Firefox::Profile:0x00000005088bf8 @model="selenium_profile", @native_events=false, @secure_ssl=false, @untrusted_issuer=true, @load_no_focus_lib=false, @additional_prefs={}, @extensions={}>}

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

После прочтения документации кажется, что теперь вы должны использовать moz:firefoxOptions для этой функциональности, но я не могу найти примеров кода, показывающих, как на самом деле использовать moz:firefoxoptions для чего-либо.

Может ли кто-нибудь дать мне пример кода, показывающий, как использовать moz:firefoxOptions или любой другой способ настройки пользовательского агента firefox с помощью selenium-webdriver 3.0.3 и geckodriver v0.11?


person Metareven    schedule 05.12.2016    source источник


Ответы (1)


В настоящее время вы не можете передать профиль через опцию профиля для geckodriver. Это описано в проблеме №2933, и в настоящее время у меня есть PR (PR #3174) для добавления этой функции.

На данный момент вы должны быть в состоянии сделать следующее:

Создайте профиль либо

profile = Selenium::WebDriver::Firefox::Profile.new('/path/to/profile')

or

profile = Selenium::WebDriver::Firefox::Profile.from_name('name_of_profile')

тогда

caps = Selenium::WebDriver::Remote::W3CCapabilities.firefox
caps[:firefox_options] = { profile: profile.as_json['zip'] }
driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)

[:firefox_options] преобразуется в moz:firefoxOptions в коде

Кстати, вы также можете работать с устаревшим драйвером FF вместо geckodriver, поскольку вы работаете с FF50.

person Lucas Tierney    schedule 06.12.2016
comment
Спасибо! Это своего рода хлопотно создавать несколько профилей в Firefox для разных пользовательских агентов, которые мы хотим использовать, но похоже, что это работает. - person Metareven; 06.12.2016