Что такое драйвер 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.