Geckodriver для firefox windows

. почему Selenium для работы с Firefox начал требовать geckodriver?

Немного истории

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

Причина в том, что драйвер для Firefox был реализован как дополнение (add-on) к браузеру. Selenium при запуске браузера автоматически “втыкал” в него это дополнение и через него происходило всё дальнейшее взаимодействие между Selenium и браузером.

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

Для простоты развёртывания когда-то давно было решено включить это дополнение прямо внутрь клиентских библиотек. Java-разработчик подключает зависимость от пакета, который лежит в Maven-репозитории и пользуется – а драйвер уже сидит там внутри. Или C#-разработчик устанавливает пакет из NuGet-репозитория. Или Python-разрабочик из pypi-репозитория. Один пакет, ничего лишнего.

Увы, эта простота аукнулась в другом месте. Выходит новая версия Firefox, следом появляется новая версия Selenium – и после этого пользователям надо обновлять все клиентские библиотеки для всех используемых языков программирования и все узлы Selenium Grid. Неприятно…

В такую же ловушку когда-то попал и драйвер для браузера Internet Explorer, только там вместо дополнения была dll-ка, которая тоже включалась внутрь дистрибутива Selenium и отдельно её обновить было невозможно. А ломалась она тоже весьма часто.

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

Выходит новая версия браузера, вместе с ней выходит новая версия драйвера-посредника, его надо обновить – но зато узлы Selenium Grid и клиентские библиотеки обновлять не нужно. Количество работы по поддержке инфраструктуры резко сокращается.

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

Сначала такая схема была успешно опробована на браузере Google Chrome. Потом на браузере Microsoft Edge.

И вот наконец дошло дело и до браузера Firefox.

Теперь для него тоже есть вспомогательный исполняемый файл.

Он называется geckodriver (браузер Firefox построен на движке Gecko, отсюда и название).

А старый драйвер в новых версиях браузера больше не работает. Такие дела…

Читайте также:  Первичный или логический для linux

Краткие выводы

Чтобы запускать тесты в Firefox версии 48 или новее нужно:

  • загрузить geckodriver для вашей платформы и поместить его в PATH,
  • использовать версию Selenium 3.0, которая пока имеет статус beta, то есть может быть не очень стабильна, но кто не рискует тот не пьёт шампанское не может тестировать в новых версиях Firefox.

А что случилось с Marionette?

Те, кто следит на новостями проекта Selenium, наверняка слышали, что Mozilla ещё с 2012 года работает над созданием новой технологии Marionette для удалённого управления браузером, которая должна прийти на смену FirefoxDriver.

С ней ничего не случилось, именно эта технология лежит в основе geckodriver.

Marionette – это название протокола и встроенного в браузер сервера для удалённой отладки. Это внутренний протокол, не совместимый со стандартом W3C WebDriver, хотя содержащий похожий набор операций (что неудивительно, ведь оба протокола предназачены для решения одной и той же задачи – управления браузером).

Geckodriver – это адаптер, преобразователь из протокола W3C WebDriver в протокол Marionette.

Набор возможностей Marionette шире, чем текущий набор возможностей WebDriver. Некоторые из них, наверное, появятся в следующей версии WebDriver 4, например, поддержка Shadow DOM. Впрочем, это уже совсем другая история.

Автор: Алексей Баранцев

Если вам понравилась эта статья, вы можете поделиться ею в социальных сетях (кнопочки ниже), а потом вернуться на главную страницу блога и почитать другие мои статьи.
Ну а если вы не согласны с чем-то или хотите что-нибудь дополнить – оставьте комментарий ниже, может быть это послужит поводом для написания новой интересной статьи.

Firefox до 46 версии поставляется с поддержкой WebDriver. Geckodriver требуется для Firefox выше 47+ версии. Нужно установить geckodriver отдельно от браузера.

Скачать geckodriver для Linux, Windows и Mac

Зайдите на github страницу с релизами чтобы выбрать нужный вам файл для скачивания в зависимости от вашей операционной системы и версии браузера Firefox.

На текущий момент, актуальная версия geckodriver является v0.26.0.

Установка geckodriver под Ubuntu, Windows и Mac

Ниже мы приводим примеры более «правильной» установки драйвера, но есть и более быстрый способ. Примените данный метод в двух случаях.

  1. Вам нужны разные версии geckodriver.
  2. У вас не получилось ничего из того, что мы предлагаем ниже под каждую операционную систему.

Инструкция установки

  1. Заходим на сайт https://github.com/mozilla/geckodriver/releases/
  2. Скачиваем архив под вашу операционную систему
  3. Распаковываем файл и запоминаем где находится файл geckodriver или geckodriver.exe (Windows)

Если у вас Linux дистрибутив или Mac, вам нужно дать файлу geckodriver нужные права на выполнения. Открываем терминал и вводим команды одна за другой.

Теперь, когда вы будете запускать код в Python, вы должны указать Selenium на этот файл.

Для Windows

Минусы такого подхода

  1. Нужно помнить где у вас лежит geckodriver;
  2. Нужно не забывать указывать в конструктор класса webdriver.Firefox путь к драйверу.

Установка geckodriver в Ubuntu, Debian и ArchLinux

Выбираем (в зависимости от архитектуры процессора x32 или x64) нужный tar архив. В моем случае будет файл geckodriver-v0.26.0-linux64.tar.gz у меня Ubuntu 18.04.3 LTS.

Вытаскиваем файл из архива.

Читайте также:  Windows вход с помощью флешки

Даем нужные права драйверу.

Отправляем драйвер в папку где его будет искать Selenium.

Установка geckodriver в Mac OS

Пожалуй, самая простая установка в Mac. Выполняем в терминале:

Проблема такого подхода в том, что может быть старая версия. Для новой версии смотрите на страницу github с релизами и скачиваем архив geckodriver-v0.26.0-macos.tar.gz.

Заходим через терминал в папку где будет лежать архив и сам драйвер.

Даем драйверу права на выполнения.

/.bashrc» с помощью VIM или NANO.

Добавляем в конец файла следующие строки. ВНИМАНИЕ! Заменяем «/your/path/» указывая реальный путь к geckodriver файлу.

Возможно вы не поймете как выйти из VIM. Такое бывает.

  1. Нажимаем клавишу ESC
  2. Вводим символы :wq
  3. Enter

Теперь у вас будет последняя версия geckodriver на вашем новеньком маке.

Установка geckodriver в Windows

Windows пользователи возможно не слышали о таким виде архивов как tar.gz это нормально. Скачиваем и устанавливаем программу 7-Zip.

Программа для распаковки tar.gz в Windows: http://www.7-zip.org/

Полная инструкция по установки geckodriver в Windows показана в видео. Смотрим с 40 секунды и повторяем. Помните что не нужно скачивать именно ту версию, что указана в видео. По указанной ссылке с github последняя версия 0.19.1 когда в самом видео 12-я версия. Скачивайте самую новую версию, возможно когда вы сейчас читаете эту статью уже вышла новая версия — скачиваем её.


Скрипт теста ниже откроет веб-сайт в новом окне Firefox.

Geckodriver для firefox windows

AutomatedTester released this Mar 12, 2018

Added

New —jsdebugger flag to open the Browser Toolbox when Firefox
launches. This is useful for debugging Marionette internals.

Introduced the temporary, boolean capability
moz:useNonSpecCompliantPointerOrigin to disable the WebDriver
conforming behavior of calculating the Pointer Origin.

Changed

HTTP status code for the StaleElementReference error changed
from 400 (Bad Request) to 404 (Not Found).

Backtraces from geckodriver no longer substitute for missing
Marionette stacktraces.

Fixed

The Firefox process is now given ample time to shut down, allowing
enough time for the Firefox shutdown hang monitor to kick in.

Firefox has an integrated background monitor that observes
long-running threads during shutdown. These threads will be
killed after 63 seconds in the event of a hang. To allow Firefox
to shut down these threads on its own, geckodriver has to wait
that time and some additional seconds.

Grapheme clusters are now accepted as input for keyboard input
to actions.

Input to the value field of the keyDown and keyUp action
primitives used to only accept single characters, which means
geckodriver would error when a valid grapheme cluster was sent in,
for example with the tamil nadu character U+0BA8 U+0BBF.

Thanks to Greg Fraley for fixing this bug.

Improved error messages for malformed capability values.

Geckodriver для firefox windows

AutomatedTester released this Sep 16, 2017

Note that with geckodriver v0.19.0 the following versions are recommended:

  • Firefox 55.0 (and greater)
  • Selenium 3.5 (and greater)

Added

Added preference extensions.shield-recipe-client.api_url to disable shield
studies which could unexpectedly change the behavior of Firefox

Читайте также:  Драйвер для наушников windows 10 realtek

Introduced the temporary, boolean capability moz:webdriverClick to enable
the WebDriver conforming behavior of the Element Click command.

Added crashreporter environment variables to better control the browser
in case of crashes

Added preference dom.file.createInChild set to true to allow file
object creation in content processes

Changed

Log all used application arguments and not only -marionette

Early abort connection attempts to Marionette if the Firefox process
closed unexpectetly

Removed deprecated socksProxyVersion in favor of socksVersion

Removed ftpProxyPort , httpProxyPort , sslProxyPort , and
socksProxyPort because ports have to be set for ftpProxy ,
httpProxy , sslProxy , and socksProxy using «:»

The proxyType noproxy has been replaced with direct in accordance
with recent WebDriver specification changes

The WindowRectParameters have been updated to return signed 32-bit
integers in accordance with the CSS and WebDriver specifications, and
to be more liberal with the input types

Mapped the FullscreenWindow to the correct Marionette command

To make sure no browser process is left behind when the NewSession
fails, the process is closed immediately now

/moz/addon/install command accepts an addon parameter, in lieu of
path , containing an addon as a Base64 string (fixed by Jason Juang)

Geckodriver для firefox windows

AutomatedTester released this Oct 31, 2017

Changed

Search suggestions in the location bar turned off as not to
trigger network connections

Block addons incompatible with E10s

Fixed

Marionette stacktraces are now correctly propagated

Some error messages have been clarified

Removed

  • Removed obsolete socksUsername and socksPassword proxy
    configuration keys because neither were picked up or recognised

AutomatedTester released this Sep 16, 2017

Note that with geckodriver v0.19.0 the following versions are recommended:

  • Firefox 55.0 (and greater)
  • Selenium 3.5 (and greater)

Added

Added preference extensions.shield-recipe-client.api_url to disable shield
studies which could unexpectedly change the behavior of Firefox

Introduced the temporary, boolean capability moz:webdriverClick to enable
the WebDriver conforming behavior of the Element Click command.

Added crashreporter environment variables to better control the browser
in case of crashes

Added preference dom.file.createInChild set to true to allow file
object creation in content processes

Changed

Log all used application arguments and not only -marionette

Early abort connection attempts to Marionette if the Firefox process
closed unexpectetly

Removed deprecated socksProxyVersion in favor of socksVersion

Removed ftpProxyPort , httpProxyPort , sslProxyPort , and
socksProxyPort because ports have to be set for ftpProxy ,
httpProxy , sslProxy , and socksProxy using «:»

The proxyType noproxy has been replaced with direct in accordance
with recent WebDriver specification changes

The WindowRectParameters have been updated to return signed 32-bit
integers in accordance with the CSS and WebDriver specifications, and
to be more liberal with the input types

Mapped the FullscreenWindow to the correct Marionette command

To make sure no browser process is left behind when the NewSession
fails, the process is closed immediately now

/moz/addon/install command accepts an addon parameter, in lieu of
path , containing an addon as a Base64 string (fixed by Jason Juang)

Оцените статью