Що таке драйвер Gecko?
Термін 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, який перетворює їх у протокол з іменем Marionette. Firefox зрозуміє команди, передані у формі протоколу Marionette, і виконує їх.
Перевага використання драйвера Gecko
Версія 2.53 Selenium Webdriver не сумісна з 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 Driver доступний як виконуваний файл, який можна завантажити в систему. Нижче наведено перелік кроків для завантаження драйвера gecko.
Крок 1) На цій сторінці https://github.com/mozilla/geckodriver/releases, виберіть відповідну версію для завантаження GeckoDriver на основі вашої операційної системи
Крок 2) Після завершення завантаження ZIP-файлу витягніть вміст ZIP-файлу у папку файлів
Крок 3) Зверніть увагу на місце, де ви витягли драйвер. Розташування буде використано пізніше для створення екземпляра драйвера.
Способи ініціалізації GeckoDriver:
Існує три різні способи ініціалізації GeckoDriver.
1. Використання бажаних можливостей:
Спочатку встановіть системну властивість для драйвера Gecko.
Синтаксис:
System.setProperty ("webdriver.gecko.driver", "Шлях до файлу geckdriver.exe");
Приклад:
System.setProperty ("webdriver.gecko.driver", "D: \\ Завантаження \\ GeckoDriver.exe");
Далі встановіть бажані можливості.
Бажані можливості допомагають Selenium зрозуміти назву браузера, версію та операційну систему для виконання автоматизованих тестів. Нижче наведено код для встановлення драйвера gecko за допомогою класу DesiredCapabilities.
Можливості бажаних можливостей = DesiredCapabilities.firefox ();възможности.setCapability ("маріонетка", правда);
Ось повний код
System.setProperty ("webdriver.gecko.driver", driverPath);Можливості бажаних можливостей = DesiredCapabilities.firefox ();възможности.setCapability ("маріонетка", правда);драйвер = новий FirefoxDriver (можливості);
2. Використання властивостей маріонетки:
Драйвер Gecko також можна ініціалізувати, використовуючи властивість marionette, як показано нижче
System.setProperty ("webdriver.gecko.driver", "D: \\ Завантаження \\ GeckoDriver.exe");
Якщо драйвер gecko ініціалізований за допомогою вищезазначеного методу, код для бажаних можливостей не потрібен.
3. Використання FirefoxOptions:
Mozilla Firefox версії 47+ має застарілу систему драйвера маріонеток. Скориставшись цим, водія маріонетки можна викликати за допомогою параметрів Firefox, як показано нижче
Параметри FirefoxOptions = нові FirefoxOptions ();options.setLegacy (істина);
Код для запуску Firefox за допомогою драйвера Gecko:
пакет com.guru99.demo;імпорт org.junit.After;імпорт org.junit.Before;імпорт org.junit.Test;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.openqa.selenium.remote.DesiredCapabilities;публічний клас GeckoDriverDemo {Рядок driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";загальнодоступний драйвер WebDriver;@ Перед тимpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Можливості бажаних можливостей = DesiredCapabilities.firefox ();възможности.setCapability ("маріонетка", правда);драйвер = новий FirefoxDriver (можливості);}@ Тестpublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Післяpublic void endTest () {driver.quit ();}}
Пояснення коду:
@Before метод:
Спочатку нам потрібно встановити системну властивість для драйвера gecko до місця завантаження файлу geckdriver.exe. Нам потрібно встановити для властивості marionette значення true для Selenium, щоб використовувати протокол Marionette для зв'язку з драйвером Gecko. Нарешті, нам потрібно запустити екземпляр браузера Firefox, використовуючи об’єкт для бажаних можливостей.
Наведені нижче твердження допомагають досягти зазначеного вище завдання.
System.setProperty ("webdriver.gecko.driver", driverPath);Можливості бажаних можливостей = DesiredCapabilities.firefox ();възможности.setCapability ("маріонетка", правда);драйвер = новий FirefoxDriver (можливості);
Метод @Test:
Ми переходимо до вказаної користувачем URL-адреси за допомогою вбудованого методу "get", наданого веб-драйвером Selenium. Наведене нижче твердження допомагає досягти того ж.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@ Після методу:
Нарешті, ми закриваємо екземпляр браузера за допомогою методу quit.
driver.quit ();
Змініть сценарій для не-Gecko на Gecko:
Сценарій драйвера для не-gecko, який використовувався до Selenium 3, був простим. Нам потрібно створити екземпляр драйвера Firefox і використовувати змінну екземпляра.
@ Перед тимpublic void startBrowser () {драйвер = новий FirefoxDriver ();}
Щоб перетворити на gecko, вам потрібно просто додати один рядок коду
@ Перед тимpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Завантаження \\ GeckoDriver.exe");драйвер = новий FirefoxDriver ();}
Поширені винятки під час використання драйвера Gecko:
Далі наведено перелік типових винятків, які виникають під час використання драйвера Gecko та з роздільною здатністю.
1. Шлях до виконуваного файлу драйвера повинен бути встановлений системною властивістю webdriver.gecko.driver:
Цей виняток виникає, коли користувач намагається створити екземпляр драйвера Firefox, не встановлюючи системну властивість для драйвера gecko. Зазвичай це роблять початківці селену, які не знають про зміни, внесені від селену 3 до селену в попередніх версіях.
Вирішенням для наведеного вище винятку є встановлення системної властивості для драйвера gecko з розташуванням файлу geckodriver.exe, як показано нижче
System.setProperty ("webdriver.gecko.driver", "D: \\ Завантаження \\ geckodriver.exe");
Зверніть увагу, що перед створенням екземпляра драйвера Mozilla Firefox вам потрібно встановити властивість драйвера gecko.
2. Виняток Firefox Not Connected:
org.openqa.selenium.firefox.NotConnectedException: Не вдається підключитися до хосту 127.0.0.1 на порту 7055 через 45000 мс.
Цей виняток зазвичай трапляється, коли версію Firefox оновлено до останньої версії. Вирішенням цього винятку є оновлення файлу jar селену та драйвера gecko до останньої версії та використання того самого.
3. Не створена сесія Виняток:
org.openqa.selenium.SessionNotCreatedException: Не вдається створити новий віддалений сеанс.
Цей виняток виникає через проблеми сумісності між драйвером Selenium та Gecko. Драйвер Gecko працює з Firefox версії 47 або новішої. Це можна вирішити, оновивши версію Firefox до 47 або вище.
4. Виняток відмови у підключенні:
Виняток WebDriver: підключення відмовлено
Цей виняток - повідомлення, яке генерується, коли веб-драйвер не може встановити з'єднання з Firefox. Це можна вирішити, використовуючи будь-який із наведених нижче методів.
- Використовуйте метод driver.quit (), щоб знищити попередні екземпляри веб-драйвера
- Очистіть кеш браузера перед виконанням автоматизованих тестів
- Очистіть робочу область проекту в Eclipse IDE
- Завжди використовуйте останню версію драйвера selenium gecko та останню версію браузера Firefox