geckodriver selenium tutorial
Підручник з GeckoDriver Selenium: Дізнайтеся, як використовувати драйвер Gecko (Marionette) у селені
Для того, щоб зрозуміти, що таке GeckoDriver, спочатку нам потрібно знати про Gecko та механізм веб-браузера. Цей підручник охоплює майже всі функції, пов'язані з GeckoDriver, надаючи вам повний огляд.
Отже, для початку давайте спочатку знати, що таке Gecko, а що таке веб-браузер?
Що ви дізнаєтесь:
- Що таке геккон?
- Що таке механізм веб-браузера?
- Що таке GeckoDriver?
- Навіщо селен потрібен GeckoDriver?
- Як використовувати GeckoDriver у проекті Selenium?
- GeckoDriver та TestNG
- Кроки для додавання шляху до змінної середовища PATH системи
- Проблеми без драйвера Gecko
- Додаткова інформація про GeckoDriver
- Висновок
- Рекомендована література
Що таке геккон?
Gecko - це веб-браузер. Є кілька додатків, для яких потрібен Gecko. Зокрема, програми, розроблені Фондом Mozilla та Корпорацією Mozilla. Gecko також необхідна для багатьох програмних проектів з відкритим кодом. Gecko написаний на C ++ та JavaScript.
Останні версії написані також на Rust. Gecko - це безкоштовний механізм веб-браузера з відкритим кодом.
Що таке механізм веб-браузера?
Веб-браузер - це не що інше, як програмне забезпечення. Основна функція цієї програми - збір вмісту (наприклад, HTML, XML, зображення) та форматування інформації (наприклад, CSS) та відображення цього відформатованого вмісту на екрані. Механізм веб-переглядача також називається механізмом макетування або механізмом візуалізації.
Такі програми, як веб-браузери, поштові клієнти, програми для читання електронних книг, он-лайн системи довідки тощо потребують відображення веб-вмісту. А для відображення веб-вмісту потрібен механізм веб-браузера, який є частиною всіх цих програм. Для кожного веб-браузера існують різні механізми веб-браузера.
Наступна таблиця показує веб-браузери та те, які механізми веб-браузерів вони використовують.
Gecko працює на наступній операційній системі без емуляції:
- Windows
- ОС Mac
- Linux
- BSD
- Unix
Він не може працювати в ОС Symbian.
Що таке GeckoDriver?
GeckoDriver - це сполучне посилання на браузер Firefox для вашого сценарії на селені . GeckoDriver - це проксі-сервер, який допомагає спілкуватися з браузерами на основі Gecko (наприклад, Firefox), для яких він надає HTTP API.
Навіщо селен потрібен GeckoDriver?
Firefox (версія 47 і вище) вніс в неї деякі зміни, і з міркувань безпеки він не дозволяє жодному сторонньому драйверу безпосередньо взаємодіяти з браузерами. Отже, ми не можемо використовувати Selenium2 з останніми версіями Firefox. Тож нам потрібен Селен3.
Selenium3 має драйвер Marionette. Selenium3 може безпосередньо взаємодіяти з браузером Firefox за допомогою проксі-сервера, який є нічим іншим, як GeckoDriver.
Як використовувати GeckoDriver у проекті Selenium?
- Давайте розглянемо, що у вас остання версія Селен WebDriver та браузер Firefox.
- Потім завантажте GeckoDriver з тут . Пізніше виберіть версію, яка підходить для вашого комп’ютера.
- Витягувати файли зі стиснутої папки
- Додайте посилання на бібліотеки Selenium3 у свій проект через Клацніть правою кнопкою миші на проекті => Шлях побудови => Налаштувати Шлях збірки => Бібліотеки => Додати зовнішні банки.
- Виберіть Папка Lib => Клацніть Clt + A => Клацніть Open .
- Після вас натисніть відкрити , ви побачите таке вікно:
- Потім натисніть OK.
- Тепер напишемо наш код і використаємо системну властивість, щоб вказати шлях GeckoDriver.
- Додайте в свій код рядок нижче:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Як скопіювати адресу витягнутого файлу. - (Натисніть «Shift» на клавіатурі та клацніть правою кнопкою миші на файлі, ви отримаєте опцію. Потім «Копіювати адресу файлу».))
** ( У цій копії вставленого шляху переконайтеся, що є подвійна коса коса риса, інакше код матиме синтаксичну помилку.)
Візьмемо приклад
Приклад
Ось лише простий сценарій, де ми відкриваємо веб-сторінку Google у браузері Firefox і перевіряємо назву веб-сторінки.
Код1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Розуміння Кодексу
# 1) імпорт org.openqa.selenium.WebDriver- Тут ми імпортуємо всі посилання на інтерфейс WebDriver. Пізніше цей інтерфейс WebDriver потрібен для створення нового браузера.
# 2) імпорт org.openqa.selenium.firefox.FirefoxDriver- Тут ми імпортуємо всі посилання на клас FirefoxDriver.
# 3) setProperty (String key, String value) - Тут ми встановлюємо системну властивість, надаючи ім'я властивості, яка називається Ключем, та її шлях, яка називається Значенням.
Ключ -Назва властивості системи, тобто webdriver.gecko.driver .
Значення - Адреса exe-файлу Gecko Driver.
# 4) Драйвер WebDriver = новий FirefoxDriver () - У цьому рядку коду ми створюємо посилальну змінну «драйвер» WebDriver, і ця посилальна змінна ініціюється за допомогою класу FirefoxDriver. Профіль Firefox без розширень та плагінів буде запущено з екземпляром Firefox.
# 5) get (“URL”) - За допомогою цього методу Get ми можемо відкрити вказану URL-адресу у браузері. Цей метод Get викликається за допомогою посилальної змінної WebDriver, тобто драйвера. Рядок передається методу Get, що означає, що URL-адреса нашої програми передається в цей метод Get.
# 6) manage (). Window (). Maximize () - Використовуючи цей рядок коду, ми максимізуємо вікно браузера. Як тільки браузер відкриває вказану URL-адресу, вона розгортається за допомогою цього рядка.
# 7) getTitle () - Використовуючи цей рядок коду, ми зможемо знайти заголовок веб-сторінки. Цей метод також називається за допомогою посилальної змінної WebDriver «драйвер». Ми зберігаємо цей заголовок у рядковій змінній ‘appTitle’.
# 8) Порівняння– Тут ми порівнюємо appTitle (який пройде driver.getTitle () метод) та expTitle (що є 'Google') за допомогою оператора If. Це просто просте твердження If-else. Коли умова “Якщо” виконується, ми друкуємо повідомлення “Перевірка успішна”, інакше ми надрукуємо повідомлення “Помилка перевірки”.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Цей рядок коду закриває браузер. Цей рядок закриває лише поточне вікно.
# 10) System.exit (0) - Цей метод рядкового коду використовується для завершення роботи віртуальної машини Java. Тому рекомендується закрити всі відкриті вікна або файли перед цим рядком.
GeckoDriver та TestNG
У коді немає великої різниці, але тут я додаю код лише для довідки.
ПРИКЛАД:
Перейдемо до прикладу. Наш приклад - відкрити веб-сторінку Google.com, отримати її назву та роздрукувати.
Код2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Моменти, які слід пам’ятати під час написання коду TestNG:
# 1) Використовуйте метод System.setProperty (ключ рядка, значення рядка) усередині функції f () так само, як і в попередньому прикладі. У цьому прикладі ми написали це в основній функції. Однак у TestNG немає основних () функцій. Якщо ви пишете його поза функцією, ви отримаєте синтаксичну помилку.
# два) Друге найважливіше, що слід пам’ятати, це System.exit (0). Немає необхідності додавати цей рядок коду у ваш скрипт TestNG. Для цього є одна причина - після запуску скрипта TestNG створюється вихідна папка, де ви можете переглядати згенеровані звіти та результат, якщо ви додасте System.exit (0) у свій сценарій ця папка (вихідна папка) згенеровано, і ви не зможете переглядати звіти.
Кроки для додавання шляху до змінної середовища PATH системи
- У системі Windows клацніть правою кнопкою миші на Мій комп'ютер або Цей ПК.
- Виберіть Властивості.
- Виберіть розширені налаштування системи.
- Клацніть на кнопку Змінні середовища.
- З системних змінних виберіть PATH.
- Натисніть кнопку Редагувати.
- Натисніть кнопку Створити
- Вставте шлях до файлу GeckoDriver.
- Клацніть OK.
Проблеми без драйвера Gecko
Ви можете зіткнутися з такими проблемами, як наведені нижче.
# 1) Якщо ви використовуєте стару версію Firefox та Selenium3, ви отримаєте такий виняток:
програми, щоб шпигувати за іншим телефоном
Виняток у потоці “main” java.lang.IllegalStateException
# два) Якщо ви використовуєте останню версію Firefox і стару версію Selenium, ви отримаєте наступний виняток:
org.openqa.selenium.firefox.NotConnectedException : Не вдається підключитися до хосту 127.0.0.1 через порт 7055 після 45000 мс
# 3) Якщо ви використовуєте останню версію Firefox та WebDriver, але не використовуєте GeckoDriver, ви отримаєте таке виняток:
Виняток у потоці “main” java.lang.IllegalStateException: Шлях до виконуваного файлу драйвера повинен бути встановлений системною властивістю webdriver.gecko.driver; для отримання додаткової інформації див тут .Останню версію можна завантажити з тут .
Додаткова інформація про GeckoDriver
Як ми знаємо, GeckoDriver - це проксі-сервер, який допомагає спілкуватися з браузерами на базі Gecko (наприклад, Firefox), для яких він надає HTTP API.
Цей HTTP API можна зрозуміти за допомогою протоколу WebDriver. У протоколі WebDriver є кілька вузлів, які включають локальний кінець, віддалений кінець, вузол посередника та вузол кінцевої точки. Зв'язок між цими вузлами описаний у протоколі WebDriver.
Локальний кінець - це сторона клієнта протоколу WebDriver. Віддалений кінець означає сторону сервера протоколу WebDriver. Вузол-посередник виконує роль проксі-сервера. Вузол кінцевої точки вводиться в дію користувальницьким агентом або подібною програмою.
Команди та відповіді, надіслані WebDriver до GeckoDriver, перекладаються в протокол Marionette, а потім передаються GeckoDriver в Marionette Driver. Отже, ми робимо висновок про те, що GeckoDriver діє як проксі-сервер між цими двома WebDriver та Marionette.
Маріонетка розділена на 2 частини, це серверна та клієнтська частини. Команди, які надсилає клієнтська частина, виконуються серверною частиною.
Ця робота з виконання команд виконується всередині браузера. Marionette - це не що інше, як комбінація компонента gecko (який є сервером Marionette) та зовнішнього компонента (який називається клієнтом Marionette). GeckoDriver написаний мовою програмування Rust.
Висновок
GeckoDriver є проміжним фактором між вашими сценаріями Selenium та браузерами на базі Gecko, такими як Firefox.
GeckoDriver - це проксі-сервер для спілкування з браузерами на базі Gecko ( Наприклад Firefox). Firefox (версія47 і вище) вніс деякі зміни, що призвело до запобігання підтримці сторонніх драйверів безпосередньо взаємодіяти з браузерами.
Це основна причина, через яку нам потрібно використовувати GeckoDriver. Найпростіший спосіб використовувати GeckoDriver у вашому сценарії - реалізувати використання Властивість System.set. (System.setProperty (“webdriver.gecko.driver”, “Шлях до файлу драйвера Gecko”)).
Ви новачок у GeckoDriver? Ви дізналися щось нове сьогодні в цьому GeckoDriver Selenium? Або у вас є щось цікаве, щоб поділитися з нами про GeckoDriver? Не соромтеся висловлювати свої думки в розділі коментарів нижче.
Рекомендована література
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- Вступ до Selenium WebDriver - Підручник з селену №8
- Знайти елемент селену за допомогою підручника з тексту з прикладами
- Впровадження нашого першого сценарію WebDriver - Підручник № 10 для Selenium WebDriver
- Як обробляти сповіщення / спливаючі вікна в Selenium WebDriver - Підручник з селену No16
- Повне налаштування та встановлення WebDriver за допомогою Eclipse - Підручник селену № 9
- Поглиблені підручники Eclipse для початківців
- Ефективні сценарії сценаріїв та усунення несправностей селену - Підручник селену No27