geckodriver selenium tutorial
Урок за GeckoDriver Selenium: Научете как да използвате Gecko (Marionette) драйвер в Selenium
За да разберем какво е GeckoDriver, първоначално трябва да знаем за Gecko и механизма за уеб браузър. Този урок обхваща почти всички функции, свързани с GeckoDriver, като по този начин ви дава пълен преглед на него.
И така, за начало нека първо знаем какво е Gecko и какво е уеб браузър двигател?
Какво ще научите:
- Какво е Gecko?
- Какво представлява уеб браузърът?
- Какво е GeckoDriver?
- Защо селенът се нуждае от GeckoDriver?
- Как да използвам GeckoDriver в селен проект?
- GeckoDriver и TestNG
- Стъпки за добавяне на път в променливата на околната среда PATH на системата
- Проблеми без Gecko Driver
- Допълнителна информация за GeckoDriver
- Заключение
- Препоръчително четене
Какво е Gecko?
Gecko е двигател за уеб браузър. Има няколко приложения, които изискват Gecko. По-конкретно приложенията, които са разработени от Mozilla Foundation и Mozilla Corporation. Gecko също е необходимост за много софтуерни проекти с отворен код. Gecko е написан на C ++ и JavaScript.
Най-новите версии са написани и на Rust. Gecko е безплатен двигател за уеб браузър с отворен код.
Какво представлява уеб браузърът?
Web Browser Engine не е нищо друго освен софтуерна програма. Основната функция на тази програма е да събира съдържанието (като HTML, XML, изображения) и да форматира информацията (като CSS) и да показва това форматирано съдържание на екрана. Устройството за уеб браузър се нарича още като механизъм за оформление или механизъм за рендиране.
Приложения като уеб браузъри, имейл клиенти, четци на електронни книги, онлайн помощни системи и т.н. се нуждаят от показване на уеб съдържание. И за показване на уеб съдържанието е необходим механизмът на уеб браузъра, който е част от всички тези приложения. Има различни двигатели за уеб браузъри за всеки уеб браузър.
Следващата таблица показва уеб браузърите и какви двигатели за уеб браузъри те използват.
Gecko работи на следната операционна система без емулация:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Не може да работи на операционна система Symbian.
Какво е GeckoDriver?
GeckoDriver е свързваща връзка към браузъра Firefox за вашия скриптове в Селен . GeckoDriver е прокси, който помага да комуникира с базирани на Gecko браузъри (напр. Firefox), за които предоставя HTTP API.
Защо селенът се нуждае от GeckoDriver?
Firefox (версия 47 и по-нова) е направил някои промени в него и поради съображения за сигурност не позволява на драйвери на трети страни да взаимодействат директно с браузърите. Следователно не можем да използваме Selenium2 с най-новите версии на Firefox. Така че се нуждаем от Selenium3.
Selenium3 има Marionette Driver. Selenium3 може директно да взаимодейства с браузъра Firefox, използвайки прокси, което не е нищо друго освен GeckoDriver.
Как да използвам GeckoDriver в селен проект?
- Нека помислим, че имате най-новата версия на Селен WebDriver и браузъра Firefox.
- След това изтеглете GeckoDriver от тук . По-късно изберете версията, която е подходяща за вашия компютър.
- Извлечете файлове от компресираната папка
- Добавете референциите на Selenium3 libs във вашия проект чрез- Щракнете с десния бутон върху проекта => Път за изграждане => Конфигуриране на Път за изграждане => Библиотеки => Добавяне на външни кутии.
- Изберете Папка Lib => Щракнете върху Clt + A => Щракнете върху Отваряне .
- След теб щракнете отворен , ще видите следния прозорец:
- След това щракнете върху 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) управление (). Прозорец (). Максимизиране () - Използвайки този ред код, ние максимизираме прозореца на браузъра. Веднага след като браузърът отвори посочения 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 Virtual Machine. Затова се препоръчва да затворите всички отворени прозорци или файлове преди този ред.
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 (String key, String value) вътре във функцията f (), както и в предишния пример. В този пример го написахме в основната функция. В TestNG обаче няма основни () функции. Ако го напишете извън функцията, ще получите синтаксична грешка.
# две) Второто най-важно нещо, което трябва да запомните, е System.exit (0). Няма нужда да добавяте този ред код във вашия скрипт TestNG. Има една причина за това, която е - след стартиране на скрипта TestNG се генерира изходна папка, където можете да видите генерираните отчети и резултат, ако добавите System.exit (0) във вашия скрипт тази папка (изходна папка) няма генерирани и няма да можете да преглеждате отчетите.
Стъпки за добавяне на път в променливата на околната среда PATH на системата
- В системата на Windows щракнете с десния бутон върху Моят компютър или Този компютър.
- Изберете Properties.
- Изберете разширени системни настройки.
- Кликнете върху бутона Променливи на околната среда.
- От Системни променливи изберете ПЪТ.
- Щракнете върху бутона Редактиране.
- Щракнете върху бутона New
- Поставете пътя на файла GeckoDriver.
- Щракнете върху OK.
Проблеми без Gecko Driver
Може да се сблъскате с някои проблеми като посочените по-долу.
# 1) Ако използвате стара версия на Firefox и Selenium3, ще получите следното изключение:
как да използвам assert в c ++
Изключение в нишката „main“ java.lang.IllegalStateException
# две) Ако използвате най-новата версия на Firefox и стара версия на Selenium, ще получите следното изключение:
org.openqa.selenium.firefox.NotConnectedException : Не може да се свърже с хост 127.0.0.1 на порт 7055 след 45000ms
# 3) Ако използвате най-новата версия на Firefox и WebDriver, но не използвате GeckoDriver, ще получите следното изключение:
Изключение в нишката “main” java.lang.IllegalStateException: Пътят до изпълнимия драйвер трябва да бъде зададен от системното свойство webdriver.gecko.driver; за повече информация вижте тук .Най-новата версия може да бъде изтеглена от тук .
Допълнителна информация за GeckoDriver
Както знаем, GeckoDriver е прокси, който помага да комуникира с базирани на Gecko браузъри (например Firefox), за които предоставя HTTP API.
Този HTTP API може да бъде разбран с помощта на протокола WebDriver. В протокола WebDriver има някои възли, които включват Local end, Remote end, Intermediary node и Endpoint node. Комуникацията между тези възли е описана в протокола WebDriver.
Локалният край е клиентската страна на протокола WebDriver. Отдалечен край означава сървърна страна на протокола WebDriver. Възелът посредник изпълнява ролята на прокси. Крайната точка се въвежда в действие от потребителски агент или подобна програма.
Командите и отговорите, изпратени от WebDriver до GeckoDriver, се превеждат в Marionette Protocol и след това се прехвърлят в Marionette Driver от GeckoDriver. Така че заключаваме, че GeckoDriver действа като прокси между тези два WebDriver и Marionette.
Марионетката е разделена на 2 части, която е сървърната и клиентската част. Командите, които се изпращат от клиентската част, се изпълняват от сървърната част.
Тази работа по изпълнение на команди се извършва в браузъра. Marionette не е нищо друго освен комбинация от компонент gecko (който е сървър на Marionette) и външен компонент (който се нарича клиент на Marionette). GeckoDriver е написан на програмен език Rust.
Заключение
GeckoDriver е междинен фактор между вашите Selenium скриптове и базирани на Gecko браузъри като Firefox.
GeckoDriver е прокси за комуникация с базирани на Gecko браузъри ( E.g. Firefox). Firefox (версия47 и по-нова) направи някои промени, което доведе до предотвратяване на подкрепа на драйвери на трети страни за директно взаимодействие с браузърите.
Това е основната причина, поради която трябва да използваме GeckoDriver. Най-лесният начин да използвате GeckoDriver във вашия скрипт е да приложите използването на Свойство System.set. (System.setProperty („webdriver.gecko.driver“, „Път на файла Gecko Driver“)).
Запознали ли сте се с GeckoDriver? Научихте ли нещо ново днес в този GeckoDriver Selenium? Или имате нещо интересно да споделите с нас за GeckoDriver? Чувствайте се свободни да изразявате мислите си в раздела за коментари по-долу.
Препоръчително четене
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Намиране на елемент от селен чрез урок с текст с примери
- Внедряване на нашия първи скрипт за WebDriver - Урок № 10 за Selenium WebDriver
- Как да боравим със сигнали / изскачащи прозорци в Selenium WebDriver - Урок за селен # 16
- Цялата настройка и инсталиране на WebDriver с Eclipse - Урок № 9 за селен
- Уроци за задълбочено затъмнение за начинаещи
- Ефективни сценарии за скриптове и отстраняване на неизправности при селен - Урок №27 за селен