Завантажте Geckodriver: як встановити Firefox Драйвер для Selenium

Що таке GeckoDriver Selenium?

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

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

GeckoDriver в Selenium

Як завантажити та встановити GeckoDriver в Selenium

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

Крок 1 ) Виберіть відповідну версію.
На цій сторінці https://github.com/mozilla/geckodriver/releases ,Виберіть відповідну версію для завантаження GeckoDriver на основі вашої операційної системи

Завантажте та встановіть GeckoDriver Selenium

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

Завантажте та встановіть GeckoDriver Selenium

Крок 3) Зверніть увагу на розташування.
Зверніть увагу на місце, де ви витягли драйвер. Розташування буде використано пізніше для створення екземпляра драйвера.

Завантажте та встановіть GeckoDriver Selenium

Способи ініціалізації GeckoDriver

Є три різні способи ініціалізації GeckoDriver.

1. Використання бажаних можливостей

Спочатку встановіть властивість системи для Gecko Driver.

Синтаксис:

System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");

приклад:

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

Далі встановіть бажані можливості.

Допомога щодо бажаних можливостей Selenium зрозуміти назву браузера, версію та операційну систему для виконання автоматизованих тестів. Нижче наведено код для встановлення драйвера gecko за допомогою класу 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 також можна ініціалізувати за допомогою властивості marionette, як показано нижче

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

Якщо драйвер gecko ініціалізовано за допомогою описаного вище методу, код для бажаних можливостей є НЕ вимагається.

3 Використовуючи FirefoxОпції

Mozilla Firefox версія 47+ має драйвер marionette як застарілу систему. Користуючись цим, водія-маріонетку можна назвати використанням 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();
    }

}

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

Метод @Before

Спочатку нам потрібно встановити системну властивість драйвера gecko на місце завантаження файлу geckdriver.exe. Нам потрібно встановити для властивості marionette значення true for Selenium to use Mariпротокол onette для зв’язку з Gecko Driver. Нарешті, нам потрібно почати Firefox екземпляр браузера з використанням об’єкта для бажаних можливостей.

Наведені нижче твердження допомагають виконати поставлене вище завдання.

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

Метод @Test

Ми переходимо до вказаної користувачем URL-адреси за допомогою вбудованого методу get, який надає Selenium веб-драйвер. Наведене нижче твердження допоможе досягти того ж.

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

Метод @After

Нарешті, ми закриваємо екземпляр браузера за допомогою методу quit.

driver.quit();

Змініть сценарій для не-Gecko на Gecko

Сценарій драйвера без gecko, який використовувався раніше Selenium 3 було просто. Нам потрібно створити екземпляр Firefox драйвер і використовуйте змінну екземпляра.

@Before
public void startBrowser() {
    driver = new FirefoxDriver();

}

Щоб перетворити на gecko, вам потрібно просто додати один рядок коду

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe");
        driver = new FirefoxDriver();

    }

Поширені винятки траплялися під час використання драйвера Gecko

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

Цей виняток виникає, коли користувач намагається створити екземпляр Firefox драйвер без налаштування системної властивості для драйвера gecko. Зазвичай це роблять початківці Selenium які не знають про внесені зміни Selenium 3 до Selenium попередні версії.

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

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

Зверніть увагу, що вам потрібно встановити властивість драйвера gecko перед створенням екземпляра Mozilla Firefox водій.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

Цей виняток зазвичай виникає, коли Firefox версію було оновлено до останньої версії. Рішенням для цього винятку є оновлення файлу selenium jar і драйвера gecko до останньої версії та використання їх.

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

Цей виняток виникає через проблеми сумісності між Selenium та водій Gecko. Драйвер Gecko працює з Firefox версія 47 або вище. Це можна вирішити шляхом оновлення Firefox версії до 47 або вище.

WebDriver Exception: Connection Refused

Цей виняток — це повідомлення, яке створюється, коли веб-драйверу не вдається встановити з’єднання з Firefox. Її можна вирішити за допомогою будь-якої з наведених нижче методик.

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

Перевага використання Gecko Driver

Selenium Webdriver версії 2.53 несумісний з Mozilla Firefox версія 47.0+. The Firefox драйвер, який використовувався в попередніх версіях Mozilla Firefox буде припинено, і використовуватиметься лише реалізація GeckoDriver. Тому тестувальники змушені використовувати GeckoDriver, якщо хочуть запускати автоматизовані тести на Mozilla Firefox версія 47.0+. Але головне питання – у чому перевага?

Основна перевага використання GeckoDriver на відміну від стандартного Firefox водій є Сумісність. GeckoDriver використовує Протокол W3C WebDriver спілкуватися з Selenium. W3C — це універсально визначений стандарт для веб-драйвера. Це означає Selenium Розробники (Люди, які кодують Selenium base) не потрібно створювати нову версію веб-драйвера для кожної версії браузера. Той самий веб-драйвер можна використовувати для кількох версій браузера. Отже, GeckoDriver є кращим порівняно з попередньою реалізацією Firefox водій.