Учебники

21) Геккон (Марионетка) Водитель

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