Драйвер Gecko (Marionette) Selenium: загрузка, установка, использование с Firefox

Содержание:

Anonim

Что такое драйвер Gecko?

Термин Gecko обозначает движок веб-браузера, встроенный в браузер Mozilla Firefox. Драйвер Gecko действует как прокси между клиентами с поддержкой веб-драйвера (Eclipse, Netbeans и т. Д.) И браузером Mozilla Firefox. Короче говоря, драйвер Gecko действует как связующее звено между тестами Selenium Web Driver и браузером Mozilla Firefox.

До Selenium 3 браузер Mozilla Firefox был браузером по умолчанию для Selenium. После Selenium 3 тестировщикам необходимо инициализировать скрипт для использования Firefox с явным использованием GeckoDriver. Selenium использует протокол W3C Webdriver для отправки запросов в GeckoDriver, который переводит их в протокол с именем Marionette. Firefox понимает команды, передаваемые в форме протокола Marionette, и выполняет их.

Преимущество использования драйвера Gecko

Selenium Webdriver версии 2.53 несовместим с Mozilla Firefox версии 47.0+. Драйвер Firefox, используемый в более ранних версиях Mozilla Firefox, будет прекращен, и будет использоваться только реализация GeckoDriver. Следовательно, тестировщики вынуждены использовать GeckoDriver, если они хотят запускать автоматические тесты в Mozilla Firefox версии 47.0+. Но большой вопрос - в чем преимущество?

Основным преимуществом использования GeckoDriver по сравнению с драйвером Firefox по умолчанию является совместимость . GeckoDriver использует протокол W3C WebDriver для связи с Selenium. W3C - это универсальный стандарт для веб-драйверов. Это означает, что разработчикам Selenium (людям, кодирующим базу Selenium) не нужно создавать новую версию веб-драйвера для каждой версии браузера. Один и тот же веб-драйвер можно использовать для нескольких версий браузера. Следовательно, GeckoDriver предпочтительнее по сравнению с более ранней реализацией драйвера Firefox.

Загрузите и установите драйвер Gecko:

Драйвер Gecko доступен в виде исполняемого файла, который можно загрузить в систему. Ниже приведен список шагов по загрузке драйвера gecko.

Шаг 1) На этой странице https://github.com/mozilla/geckodriver/releases выберите подходящую версию для загрузки GeckoDriver в зависимости от вашей операционной системы.

Шаг 2) После завершения загрузки ZIP-файла извлеките содержимое ZIP-файла в папку с файлами.

Шаг 3) Отметьте место, где вы извлекли драйвер. Местоположение будет использоваться позже для создания экземпляра драйвера.

Способы инициализации GeckoDriver:

Есть три разных способа инициализировать GeckoDriver.

1. Использование DesiredCapabilities:

Сначала установите системное свойство для драйвера Gecko.

Синтаксис:

System.setProperty ("webdriver.gecko.driver", "Путь к файлу geckdriver.exe");

Пример:

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

Затем установите желаемые возможности.

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

Возможности DesiredCapabilities = DesiredCapabilities.firefox ();features.setCapability ("марионетка", истина);

Вот полный код

System.setProperty ("webdriver.gecko.driver", driverPath);Возможности DesiredCapabilities = DesiredCapabilities.firefox ();features.setCapability ("марионетка", истина);драйвер = новый FirefoxDriver (возможности);

2. Использование свойства марионетки:

Драйвер Gecko также можно инициализировать с помощью свойства марионетки, как показано ниже.

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

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

3. Использование FirefoxOptions:

Mozilla Firefox версии 47+ имеет драйвер марионетки как устаревшую систему. Воспользовавшись этим, драйвер марионетки можно вызвать с помощью параметров Firefox, как показано ниже.

Параметры FirefoxOptions = новый FirefoxOptions ();options.setLegacy (правда);

Код для запуска firefox с помощью драйвера Gecko:

пакет com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;public class GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";общедоступный драйвер WebDriver;@Передpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Возможности DesiredCapabilities = DesiredCapabilities.firefox ();features.setCapability ("марионетка", истина);драйвер = новый FirefoxDriver (возможности);}@Тестpublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Послеpublic void endTest () {driver.quit ();}}

Пояснение к коду:

@Before метод:

Первоначально нам нужно установить системное свойство для драйвера gecko на место загрузки файла geckdriver.exe. Нам нужно установить для свойства марионетки значение true, чтобы Selenium использовал протокол Marionette для связи с драйвером Gecko. Наконец, нам нужно запустить экземпляр браузера Firefox, используя объект Desired Capabilities.

Приведенные ниже утверждения помогают выполнить указанную выше задачу.

System.setProperty ("webdriver.gecko.driver", driverPath);Возможности DesiredCapabilities = DesiredCapabilities.firefox ();features.setCapability ("марионетка", истина);драйвер = новый FirefoxDriver (возможности);

@Метод испытания:

Мы переходим к указанному пользователем URL-адресу, используя встроенный метод «get», предоставляемый веб-драйвером Selenium. Приведенное ниже утверждение помогает добиться того же.

driver.get ("http://demo.guru99.com/selenium/guru99home/");

@After метод:

Наконец, мы закрываем экземпляр браузера с помощью метода выхода.

driver.quit ();

Измените скрипт для не-Gecko на Gecko:

Скрипт драйвера без поддержки gecko, который использовался до Selenium 3, был простым. Нам нужно создать экземпляр драйвера Firefox и использовать переменную экземпляра.

@Передpublic void startBrowser () {драйвер = новый FirefoxDriver ();}

Чтобы преобразовать в gecko, вам нужно просто добавить одну строку кода

@Передpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");драйвер = новый FirefoxDriver ();}

Общие исключения при использовании драйвера Gecko:

Ниже приведен список распространенных исключений, которые возникают при использовании драйвера Gecko и с определенным разрешением.

1. Путь к исполняемому файлу драйвера должен быть задан системным свойством webdriver.gecko.driver:

Это исключение возникает, когда пользователь пытается создать экземпляр драйвера Firefox без установки системного свойства для драйвера gecko. Обычно это делают новички в Selenium, которые не знают об изменениях, сделанных с Selenium 3 до предыдущих версий Selenium.

Разрешение вышеупомянутого исключения - установить системное свойство для драйвера gecko с расположением файла geckodriver.exe, как показано ниже.

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");

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

2. Исключение Firefox "не подключен":

org.openqa.selenium.firefox.NotConnectedException: невозможно подключиться к хосту 127.0.0.1 через порт 7055 через 45000 мс.

Это исключение обычно возникает, когда версия Firefox была обновлена ​​до последней версии. Решение для этого исключения - обновить файл selenium jar и драйвер gecko до последней версии и использовать их.

3. Исключение сеанса не создано:

org.openqa.selenium.SessionNotCreatedException: невозможно создать новый удаленный сеанс.

Это исключение возникает из-за проблем совместимости между Selenium и драйвером Gecko. Драйвер Gecko работает с Firefox версии 47 и выше. Это можно решить, обновив Firefox до версии 47 или выше.

4. Исключение при отказе в подключении:

Исключение WebDriver: в соединении отказано

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

  • Используйте метод driver.quit () для уничтожения более ранних экземпляров веб-драйвера
  • Очистите кеш браузера перед выполнением автоматических тестов.
  • Очистите рабочее пространство проекта в Eclipse IDE
  • Всегда используйте последнюю версию драйвера selenium gecko и самую последнюю версию браузера Firefox.