Какво е Selenium Webdriver?
Selenium Webdriver е колекция от API с отворен код, която се използва за тестване на уеб приложения. Инструментът Selenium Webdriver се използва за автоматизиране на тестването на уеб приложения, за да се провери дали работи както се очаква или не. Той поддържа основно браузъри като Firefox, Chrome, Safari и Internet Explorer. Той също така ви позволява да изпълнявате тестване на различни браузъри.
WebDriver също ви позволява да използвате език за програмиране при създаването на вашите тестови скриптове (не е възможно в ID на Selenium).
Вече можете да използвате условни операции като if-then-else или switch-case. Можете също така да изпълнявате цикли като do-while.
Следните езици за програмиране се поддържат от WebDriver
- Java
- .Нет
- PHP
- Python
- Perl
- Руби
Не е нужно да ги знаете. Просто трябва да сте информирани в едно. В този урок обаче ще използваме Java с Eclipse като наша IDE.
Разлика между Selenium RC и Webdriver
Преди появата на WebDriver през 2006 г. имаше още един инструмент за автоматизация, наречен Selenium Remote Control. Както WebDriver, така и Selenium RC имат следните функции:
- И двете ви позволяват да използвате език за програмиране при проектирането на вашите тестови скриптове.
- И двете ви позволяват да стартирате тестовете си срещу различни браузъри.
И така, как се различават? Нека обсъдим отговорите.
1. Архитектура
Архитектурата на WebDriver е по-проста от тази на Selenium RC .
- Той контролира браузъра от ниво OS
- Всичко, от което се нуждаете, е IDE на вашия програмен език (който съдържа вашите команди на Selenium) и браузър.
Архитектурата на Selenium RC е много по-сложна.
- Първо трябва да стартирате отделно приложение, наречено Selenium Remote Control (RC) Server, преди да можете да започнете да тествате
- Сървърът Selenium RC действа като "посредник" между вашите команди на Selenium и вашия браузър
- Когато започнете да тествате, Selenium RC Server „инжектира“ в браузъра програма на Javascript, наречена Selenium Core .
- След като бъде инжектиран, Selenium Core ще започне да получава инструкции, предавани от RC сървъра от вашата тестова програма.
- Когато инструкциите бъдат получени, Selenium Core ще ги изпълни като Javascript команди.
- Браузърът ще се подчинява на инструкциите на Selenium Core и ще предава отговора си на RC сървъра.
- RC сървърът ще получи отговора на браузъра и след това ще ви покаже резултатите.
- RC сървърът ще извлече следващата инструкция от тестовия скрипт, за да повтори целия цикъл.
2. Скорост
WebDriver е по-бърз от Selenium RC, тъй като говори директно на браузъра, използвайки собствения механизъм на браузъра, за да го контролира.
Selenium RC е по-бавен, тъй като използва Javascript програма, наречена Selenium Core. Този Selenium Core е този, който директно контролира браузъра, а не вие.
3. Взаимодействие в реалния живот
WebDriver взаимодейства с елементите на страницата по по-реалистичен начин. Например, ако имате деактивирано текстово поле на страница, която сте тествали, WebDriver наистина не може да въведе никаква стойност в нея, точно както реалният човек не може.
Selenium Core, подобно на други JavaScript кодове, има достъп до деактивирани елементи. В миналото тестерите на Selenium се оплакват, че Selenium Core е успял да въведе стойности в деактивирано текстово поле в техните тестове. Разлики в API
4. API

API на Selenium RC е по-зрял, но съдържа съкращения и често объркващи команди . Например, през повечето време тестерите са объркани дали да използват type или typeKeys; или дали да използвате click, mouseDown или mouseDownAt. Още по-лошо, различните браузъри интерпретират всяка от тези команди по различен начин!
API на WebDriver е по-прост от RC на Selenium . Той не съдържа излишни и объркващи команди.
5. Поддръжка на браузър
WebDriver може да поддържа безглавия браузър HtmlUnit
HtmlUnit се нарича "без глава", тъй като е невидим браузър - без GUI.
Това е много бърз браузър, защото не се губи време в изчакване на елементите на страницата да се заредят. Това ускорява вашите цикли за изпълнение на теста.
Тъй като е невидим за потребителя, той може да се контролира само чрез автоматизирани средства.
Selenium RC не може да поддържа безглавия браузър HtmlUnit. Той се нуждае от истински, видим браузър, за да работи.
Ограничения на WebDriver
WebDriver не може лесно да поддържа нови браузъри
Не забравяйте, че WebDriver работи на ниво ОС. Също така не забравяйте, че различните браузъри комуникират с операционната система по различни начини. Ако излезе нов браузър, той може да има различен процес на комуникация с операционната система в сравнение с други браузъри. Така че, трябва да дадете на екипа на WebDriver доста време, за да разбере този нов процес, преди те да могат да го внедрят в следващата версия на WebDriver.
От екипа на разработчиците на WebDriver обаче зависи да реши дали да поддържа новия браузър или не.
Selenium RC има вграден генератор на резултатите от теста
Selenium RC автоматично генерира HTML файл с резултати от теста . Форматът на доклада беше предварително зададен от самия RC. Разгледайте пример за този доклад по-долу.
WebDriver няма вградена команда, която автоматично генерира файл с резултати от теста . Ще трябва да разчитате на изходния прозорец на вашата IDE или да проектирате отчета сами, като използвате възможностите на вашия език за програмиране и да го съхранявате като текст, HTML и т.н.
Обобщение
- WebDriver е инструмент за тестване на уеб приложения в различни браузъри, използващи различни програмни езици.
- Вече можете да правите мощни тестове, защото WebDriver ви позволява да използвате програмен език по ваш избор при проектирането на вашите тестове.
- WebDriver е по-бърз от Selenium RC поради по-опростената си архитектура.
- WebDriver директно разговаря с браузъра, докато Selenium RC се нуждае от помощта на RC сървъра, за да го направи.
- API на WebDriver е по- кратък от този на Selenium RC.
- WebDriver може да поддържа HtmlUnit, докато Selenium RC не може.
- Единствените недостатъци на WebDriver са:
- Той не може лесно да поддържа нови браузъри , но Selenium RC може.
- Той няма вградена команда за автоматично генериране на резултатите от теста.