Что такое драйвер Gecko?
Термин Gecko обозначает движок веб-браузера, встроенный в браузер Mozilla Firefox. Драйвер Gecko действует как прокси между клиентами с поддержкой Web Driver (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) не нужно создавать новую версию Web Driver для каждой версии браузера. Один и тот же веб-драйвер можно использовать для нескольких версий браузера. Следовательно, GeckoDriver предпочтительнее по сравнению с более ранней реализацией драйвера Firefox.
Загрузите и установите драйвер Gecko:
Драйвер Gecko доступен в виде исполняемого файла, который можно загрузить в систему. Ниже приведен список шагов для загрузки драйвера геккона.
Шаг 1) На этой странице https://github.com/mozilla/geckodriver/releases выберите подходящую версию для загрузки GeckoDriver в зависимости от вашей операционной системы.
Шаг 2) После завершения загрузки ZIP-файла извлеките содержимое ZIP-файла в папку с файлом
Шаг 3) Запишите место, где вы извлекли драйвер. Местоположение будет использоваться позже для создания экземпляра драйвера.
Способы инициализации GeckoDriver:
Существует три разных способа инициализации GeckoDriver.
1. Использование DesiredCapabilities:
Сначала установите системное свойство для Gecko Driver.
Синтаксис:
System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");
Пример:
System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");
Затем установите желаемые возможности.
Желаемые возможности помогают Selenium понимать имя браузера, версию и операционную систему для выполнения автоматических тестов. Ниже приведен код для установки драйвера геккона с использованием класса DesiredCapabilities.
DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true);
Вот полный код
System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true); driver= new FirefoxDriver(capabilities);
2. Используя свойство марионеток:
Драйвер Gecko также можно инициализировать с помощью свойства марионетки, как показано ниже
System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");
Если драйвер геккона инициализируется с использованием вышеуказанного метода, код для желаемых возможностей не требуется.
3. Использование FirefoxOptions:
Mozilla Firefox версии 47+ имеет устаревшую систему управления марионетками. Воспользовавшись этим, драйвер марионетки можно вызвать с помощью параметров Firefox, как показано ниже
FirefoxOptions options = new FirefoxOptions(); options.setLegacy(true);
Код для запуска Firefox с использованием драйвера Gecko:
package 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"; public WebDriver driver; @Before public void startBrowser() { System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); driver = new FirefoxDriver(capabilities); } @Test public void navigateToUrl() { driver.get("http://demo.guru99.com/selenium/guru99home/"); } @After public void endTest() { driver.quit(); } }
Объяснение кода:
@ Перед методом:
Изначально нам нужно установить системное свойство для драйвера gecko в место загрузки файла geckdriver.exe. Нам нужно установить для свойства marionette значение true, чтобы Selenium использовал протокол Marionette для связи с Gecko Driver. Наконец, нам нужно запустить экземпляр браузера Firefox, используя объект для желаемых возможностей.
Приведенные ниже утверждения помогают решить вышеуказанную задачу.
System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true); driver= new FirefoxDriver(capabilities);
@Метод испытания:
Мы перемещаемся по указанному пользователем URL-адресу, используя встроенный метод «get», предоставляемый веб-драйвером Selenium. Приведенное ниже утверждение поможет добиться того же.
driver.get("http://demo.guru99.com/selenium/guru99home/");
Метод @After:
Наконец, мы закрываем экземпляр браузера, используя метод quit.
driver.quit();
Измените скрипт для не Gecko в Gecko:
Сценарий драйвера не-геккона, который использовался до Selenium 3, был простым. Нам нужно создать экземпляр драйвера Firefox и использовать переменную экземпляра.
@Before public void startBrowser() { driver = new FirefoxDriver(); }
Чтобы преобразовать в геккона, вам нужно просто добавить одну строку кода
@Before public void startBrowser() { System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe"); driver = new FirefoxDriver(); }
Распространенные исключения произошли при использовании драйвера Gecko:
Ниже приведен список распространенных исключений, возникающих при использовании драйвера Gecko и с разрешением.
1. Путь к исполняемому файлу драйвера должен быть установлен системным свойством webdriver.gecko.driver:
Это исключение возникает, когда пользователь пытается создать экземпляр драйвера Firefox без установки системного свойства для драйвера геккона. Обычно это делают новички в Selenium, которые не знают об изменениях, внесенных из Selenium 3 в Selenium в предыдущих версиях.
Решение для вышеупомянутого исключения состоит в том, чтобы установить системное свойство для драйвера gecko с расположением файла geckodriver.exe, как показано ниже
System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\geckodriver.exe");
Обратите внимание, что вам нужно установить свойство драйвера gecko перед созданием экземпляра драйвера Mozilla Firefox.
2. Firefox Not Connected Исключение:
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.
Это исключение обычно возникает, когда версия Firefox была обновлена до последней версии. Решение для этого исключения заключается в обновлении файла jar селена и драйвера геккона до последней версии и их использование.
3. Сессия не создана Исключение:
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.
Это исключение происходит из-за проблем совместимости между Selenium и драйвером Gecko. Драйвер Gecko работает с Firefox версии 47 или выше. Это может быть решено путем обновления версии Firefox до 47 или выше.
4. Исключение соединения отклонено:
WebDriver Exception: Connection Refused
Это исключение — сообщение, генерируемое, когда веб-драйвер не может установить соединение с Firefox. Это может быть решено с использованием любого из следующих методов.
- Используйте метод driver.quit (), чтобы уничтожить более ранние экземпляры веб-драйвера
- Очистите кеш браузера перед выполнением ваших автоматических тестов
- Очистить рабочую область проекта в Eclipse IDE
- Всегда используйте последнюю версию драйвера селеновых гекконов и самую последнюю версию браузера Firefox