Selenium-Webdriver With PHPUnit Automation test for Joomla CMS!
Acceptance testing with Selenium 2 and PHPUnit
-
Upload
bisser-todorov -
Category
Technology
-
view
819 -
download
6
description
Transcript of Acceptance testing with Selenium 2 and PHPUnit
![Page 1: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/1.jpg)
Acceptance Testingwith Selenium & PHPUnit
BULGARIA PHP GROUP
![Page 2: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/2.jpg)
Software testing
![Page 3: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/3.jpg)
Подходи при тестване
• White box testingТова са тестове базирани на вътрешната структура на софтуера. Рарзработчика на този тип тестове трябва да има програмистки умения. Тези тестове най-често се асоциират с Unit Test.
• Black box testingТози тип тестове третират софтуера като черна кутия. Те проверяват функционалността на софтуера без да познават неговата вътрешна структура.
• Gray box testingТестове които се изпълнява на ниво black box обаче използват знания за вътрешната структура и алгоритми на софтуера. (Нещо като хибриден вариант от горните два подхода).
![Page 4: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/4.jpg)
Нива на тестване
• Unit testingТези тестове са предназначени да верифицират функционалността на определен модул от кода – най-често функция, клас.
• Integration testingТози тип тестове целя да верифицират интерфейса между отделните компоненти на софтуерната система.
• System testingПровеждат се върху готовата, интегрирана система за да проверят дали тя отговаря на съответните изисквания. Попадат в групата на black-box тестовете.
![Page 5: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/5.jpg)
Нива на тестване
• Acceptance testingТези тестове целят да установят дали системата може да отговори на ежедневните бизнес изисквания и дали е завършена или готова за бизнес употреба.
![Page 6: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/6.jpg)
Selenium 2.0
![Page 7: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/7.jpg)
Какво е Selenium?
• Selenium 1, 2 – browser automation tool!Софтуерен framework за предназначен за тестване на web приложения. Той поддържа пакет от инструменти всеки от които предлага различен подход за автоматизиране на тестовете. Създаден е от програмиста Jason Huggins през 2004 г.
![Page 8: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/8.jpg)
Архитектура
• Selenium 2 : WebDriver + Selenium Server
– Обектно ориентирано API посредствеом което можем да контролираме поведението на браузъра
– Драйвери за голям брой браузъри.
• Selenium 1 – Selenium RC
– Версията преди WebDriver – все още се поддържа за обратна съвместимост.
• Selenium IDE
– Графичен инструметн за създаване на прототипи на тестови скриптове.
![Page 9: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/9.jpg)
Selenium IDE
![Page 10: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/10.jpg)
Selenium IDE
• Какво е Selenium IDESelenium IDE (Integrated Development Environment) е графичен инструмент който може да използвате за създаванена вашите тестове. Той представлява лесен за използване plugin за Mozila Firefox. Съдържа и контекстно меню което ви дава възможност първо да селектирате даден елемент от отворената в браузъра страничка и след това да изберете от него дадена команда, параметрите на която се попълват в зависимост от контекста.
• Инсталиранe
![Page 11: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/11.jpg)
Selenium IDE
• Интерфейс
– Test Case Pane
• Table• Source• Log• Reference
Показва резултата от изпълнението
на скрипта Показва кратка документацияна текущата команда
![Page 12: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/12.jpg)
Selenium IDE
• Създаване на Test Case
– ЗаписванеЗаписва действията на потребителя.
– Добавяне на verification, assert с контекстно менюПонякога нашите тестове трябва да проверят свойства на обекти от страницата. В този случаи се нуждаем от команди verify, assert.
– РедактиранеДобавяне и редактиране на команди и коментари.
![Page 13: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/13.jpg)
Selenium IDE
• Отваряне, стариране и записване на тестове.
• Базов URL
![Page 14: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/14.jpg)
• Пример: Създаване на потребителски акаунт
- записване на тест;- редактиране на тест;- добавяне на команда verify.
![Page 15: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/15.jpg)
Selenium IDE
• Команди
– ActionsКоманди които манипулират състоянието на приложението. Повечето actions може да се извикват и със суфикс: andWait.Note: Ако даден actiоn пропадне, изпълението на теста се прекратява.
– AccessorsПроверява състоянието на приложението и записва резултата в променлива. Автоматично генерира assertion. (http://selenium-sipendra.blogspot.com/2011/04/selenium-accessors.html)
– AssertionsПроверяват дали състоянието е такова каквото се очаква. Всички assertion имат три режима: assert, verify, waitFor.
![Page 16: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/16.jpg)
Selenium IDE
• Синтаксис на командитеКоманда и един или два параметъра. Единият обикновено е локатор. А другия текстов щаблон.
• ЛокаториМножество команди изискват “target”. Target – идентифицира елемента. Той се състои от две части: location strategy, и location. Записва се в долния формат:locatorType = location
– by Id
– by Name
– by CSS
– by XPath
![Page 17: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/17.jpg)
WebDriver
![Page 18: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/18.jpg)
WebDriver
• Selenium WebDriver прави заявки директно към браъзъра като използва browsers native support for the automation. Това е доста различно от начина по който работи Selenium RC. Selenium RC работи по един и същи начин с всеки браузър който поддържа. Той „инджектава“ JavaScript функции, когато браузъра се зареди. И след това използва тези функции за автоматизация. WebDriver използва съвсем различна техника . Той управлява браъзъра директно като използва вградената поддръжака за автоматизация на самия браъзър.
![Page 19: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/19.jpg)
WebDriver
• WebDriver дава възможност да изпълнявате вашите тестове на различни браузъри а не само на Firefox.
• WebDriver ви дава възможност да използвате език за програмиране при създаване на вашите тестове.
• WebDriver има native поддръжка за Java, C#, Python, Rubby. За Perl, PHP разчитаме на third party библиотеки.
![Page 20: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/20.jpg)
Selenium Server
![Page 21: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/21.jpg)
Selenium Server
• Вие може да се нуждаете или не от selenium server, в зависимост от това как искате да изпозлвате селениум WebDriver. Ако искате да изпозлвате само WebDriver-API вие не се нуждаете от сървър. Ако вашите тестове се стартират на същата машина на която и браузъра – и ползвате само API то, не се нуждаете от сървър, WebDriver ще стартира браузъра директно.
![Page 22: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/22.jpg)
Selenium Server
• използвате SeleniumGrid;• искате да стартирате браузъра
на отдалечена машина;• няма native поддръжка на
езика който ползат.
Вие се нуждаете отSelenium Server ако:
![Page 23: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/23.jpg)
Selenium, PHP & PHPUnit
![Page 24: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/24.jpg)
Selenium, PHP & PHPUnit
• Selenium & PHPЗа съжаление Selenium не поддържа WebDriver API за PHP. За това за да ползваме Selenium с PHP ние се нуждаем от:
– Selenium Standalone Server (и тъй като той е написан на Java се нуждаем и от jre.)
– и разбира се от клиентски PHP Selenium библиотеки, освен ако не искаме да пращаме JSON съобщения дирекнто а сървъра.
![Page 25: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/25.jpg)
Selenium, PHP & PHPUnit
• Клиентски библиотеки
– PHPUnit_Selenium
– Facebook’s php-webdriver
– php-webdriver-bindings
– WebDriver-PHP
![Page 26: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/26.jpg)
PHPUnit Selenium
![Page 27: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/27.jpg)
PHPUnit_Extensions_SeleniumTestCase
![Page 28: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/28.jpg)
PHPUnit_Extensions_SeleniumTestCase
• ОписаниеРеализира Selenium RC API – Selenium 1. Поддържа client/server протокола посредством който скрипта комуникира със Selenium Server. Освен това поддържа специализирани assertion методи.
![Page 29: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/29.jpg)
PHPUnit_Extensions_Selenium2TestCase
![Page 30: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/30.jpg)
PHPUnit_Extensions_Selenium2TestCase
• ОписаниеТози клас ни дава възможност да използваме WebDriver API (което обаче за съжаление е частично реализирано).
• Изисквания
– PHPUnit
– curl
– Selenium Extension
– Selenium Server (+jre)
![Page 31: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/31.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Инсталиране
– PHPUnit_Selenium
pear channel-discover pear.phpunit.de
pear install pear.phpunit.de/PHPUnit_Selenium
– Selenium Server
Изтегляме jar файла от долната страничка:
http://docs.seleniumhq.org/download/
и го стартираме преди да пуснем тестовете:
java –jar selenium-server-standalone-2.39.0.jar
![Page 32: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/32.jpg)
PHPUnit_Extensions_Selenium2TestCase
• използване
class WebTest extends PHPUnit_Extensions_Selenium2TestCase{ protected function setUp() {
// конфигурация – този метод е задължителен.}
public function testTitle() {
// тестове}
}?>
![Page 33: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/33.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Метод setUp()
– setBrowser(string $browser)Задава браузъра който да бъде използван от Selenium Server.
– setBrowserUrl(string $browserUrl)Задава базовият URL.
– setHost(string $host)Задава хоста на който се намира Selenium Server.
![Page 34: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/34.jpg)
PHPUnit_Extensions_Selenium2TestCase
– setPort(int $port)Задава порта на който отговаря сървъра.
– setTimeout(int $timeout)Задава timeout при свързване със сървъра.
– setSleep(int $second)Задава интервала на изчакване между изпращането на action команди.
![Page 35: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/35.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Locators
– byId($id)Намира елемента на базата на неговот id.
– byName($name)Намира елемента на базта на неговото име.
– byCssSelector($cssSelector)Намира елемента на базта на невогия css selector.
![Page 36: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/36.jpg)
PHPUnit_Extensions_Selenium2TestCase
– byClassName($className)Намира елемента на базата на името на неговия клас.
– byXPath($id)Намира елемента използвайки XPath.
– byLinkText($id)Текста съдържащ се в линка.
![Page 37: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/37.jpg)
PHPUnit_Extensions_Selenium2TestCase
• PHPUnit_Extensions_Selenium2TestCase_ElementВсеки един от гореизброените локатори връща обект от горния клас, който има следните методи:
– atribute($name)Връща атрибута на елемента.
– clear()Изтрива съдържанието на form element.
– click()Кликва върху елемента.
![Page 38: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/38.jpg)
PHPUnit_Extensions_Selenium2TestCase
– css($propertyName)Връща съответното CSS свойстов.
– equals()Проверява дали два елемента са еднакви.
– location()Връща масив с x, y позицията на елемента.
– selected()Проверява състонието на опция или друг елемент на форма.
![Page 39: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/39.jpg)
PHPUnit_Extensions_Selenium2TestCase
• size()Връща масив с x, y позицията на елемента.
• submit()Събмитва форма.
• value($newValue = null)Връща или задава стойност на даден елемент. Ако той вече има стойност новата се добавя към старата.
• text()Връща съдържанието на елемента.
![Page 40: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/40.jpg)
Примери: Верификация на линковете от горната лява част на сайта на базата на тяхното id (метод: byId()).
Проверяваме:- дали присъстват на всяка една от трите странички- дали съдържат верните текстове- дали съдържат верните линкове
![Page 41: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/41.jpg)
![Page 42: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/42.jpg)
![Page 43: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/43.jpg)
![Page 44: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/44.jpg)
Пример: тестваме размера на логото.
Изплзваме: локатор – byClassName().
ОчаквамеРазмера да е 80x80.
![Page 45: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/45.jpg)
![Page 46: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/46.jpg)
![Page 47: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/47.jpg)
![Page 48: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/48.jpg)
Пример: Тестваме позицията на трите изображения от индексната страница.
Използваме: локатор byCssSelector().
Очакваме: ... картинката на следващата страница.
![Page 49: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/49.jpg)
![Page 50: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/50.jpg)
![Page 51: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/51.jpg)
![Page 52: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/52.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Actions
– url($url = null)Отваря страницата с указания url. Ако няма url – връща текущя.
– title()Връща заглавието на текущата страница.
– clickOnElement($id)Кликва върху елемента с указаното id.
– moveto($element)Премества маркера на мишката върху указания елемент..
– click($button = 0)Кликва върху позицията на която сме преместили маркера с moveto.
![Page 53: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/53.jpg)
Пример: Искаме да проверим дали линковете от тулбара работят.
Използваме:- метода click() на върнатия от локарора елемент;- също така $this->moveto(), $this->click().
![Page 54: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/54.jpg)
![Page 55: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/55.jpg)
PHPUnit_Extensions_Selenium2TestCase
– keys($keys)Изпраща поредица от клавиши.
– select($element)Като параметър получава обект от тип:
PHPUnit_Extensions_Selenium2TestCase_Elemen
и връща обект от тип:
PHPUnit_Extensions_Selenium2TestCase_Select.
![Page 56: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/56.jpg)
PHPUnit_Extensions_Selenium2TestCase_Select
• PHPUnit_Extensions_Selenium2TestCase_Select
– selectedLabel()Връща текущо избрания лейбъл на обекта.
– selectedValue()Връща текущо избраната стойност на обекта.
– selectOptionByLabel($string)Селектира опцията с указания лейбъл.
– selectOptionByValue($string)Селектира опцията с указаната стойност.
![Page 57: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/57.jpg)
Пример: Попълване и събмитване на форма. Очакваме :1. Събмитването да мине успешно и да бъдем препратени на долния url: http://selenium.bulgariaphp.com/signup.php
2. Страничката на която сме препратени да съдържа текста:Sussessful Signup. Please, check your email.
3. Данните които сме въвели да се запишат в базата данни.
![Page 58: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/58.jpg)
![Page 59: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/59.jpg)
![Page 60: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/60.jpg)
![Page 61: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/61.jpg)
Пример: Въвеждаме потребител с име което съвпада с вече въведено такова.
Очакваме:
- да останем на същата страница;
- да видим съобщението за дублиращото се име;
- във формата да се запазят всички въведени от потребителя данни.
![Page 62: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/62.jpg)
![Page 63: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/63.jpg)
![Page 64: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/64.jpg)
PHPUnit_Extensions_Selenium2TestCase
– acceptAlert()Щраква OK върху alert или confirmation box.
– dismissAlert()Щраква върху cancel при confirmation box, или не натиска OK при alert.
– alertTesxt()Връща текста от текущия alert.
![Page 65: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/65.jpg)
Пример: Alerts – Имаме контролен панел посредством който трием
потребители, щраквайки върху техните потребителски имена. При щракване
върху дадено име се отваря alert. Като потвърдим – потребителя се трие.
Ако щракнем на cancel – не се случва нищо.
Искаме да се уверми:
- че пренасочва към правилната стграница;
- на нея излиза съобщение че потребителя е изтрит;
- требителя го няма в базата данни.
![Page 66: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/66.jpg)
![Page 67: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/67.jpg)
![Page 68: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/68.jpg)
PHPUnit_Extensions_Selenium2TestCase
– timeout()Връща обект от тип PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts.
• PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts
– implicitWait($time)Задава времето на изчакване при търсене на даден обект.
![Page 69: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/69.jpg)
Пример: Тестване за наличието на елемент който се зарежда от Ajax.
Очакваме:- да намерим зареждания от Ajax обект, на страничката.
![Page 70: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/70.jpg)
![Page 71: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/71.jpg)
![Page 72: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/72.jpg)
![Page 73: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/73.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Мобилни устройства
– orientation
– touch
• Ако елемента не бъде намерен?
– PHPUnit_Extensions_Selenium2TestCase_WebDriverException
![Page 74: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/74.jpg)
PHPUnit_Extensions_Selenium2TestCase
• Assertion
– assertFalse()
– assertTrue();
– assertContains();
– assertEquals()
![Page 75: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/75.jpg)
Facebook’s php-webdriver
![Page 76: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/76.jpg)
![Page 77: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/77.jpg)
![Page 78: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/78.jpg)
Selenium GRID
![Page 79: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/79.jpg)
Selenium GRID
• Какво е Selenium GRID?Selenium GRID ни дава възможност да стартираме паралелно множество тестове на различни машини с различни операционни системи и различни браузъри. Най-общо казано има две причини поради които да ползваме Selenium GRID:
– искаме да стартираме нашите тестове на ралзични браузъри или различни верси на един и същи браузър;
– да редуцираме времето за изпълнение на пакета от тестове.
• GRIDСъстои се от един hub и един или повече nodes. И двете се реализират посредством:selenium-standalone-server.jar.
![Page 80: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/80.jpg)
Selenium GRID
• Как работи?Selenium HUB получава скрипта с информация за това на коя платформа трябва да го стартира. HUB-ът „познава“ конфигурацията на всеки регистриран note. На базата на тази информация той избира node с указаната комбинация платформа-браузър.
• ИнсталиранеИнсталирането е просто. Изтеглете Selenium Server jar файла от долния линк и го запишете на всички nodes и на сървъра.http://docs.seleniumhq.org/download/
![Page 81: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/81.jpg)
Selenium GRID
• Стартиране
– HUBjava -jar selenium-server-standalone-2.21.0.jar -role hub
– Nodejava -jar selenium-server-standalone-2.21.0.jar -role node -hub http://<hub hostname> :4444/grid/register
![Page 82: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/82.jpg)
Selenium GRID
![Page 83: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/83.jpg)
Пример: Конфигуриране на Selenium GRID: hub, nodes.Стартиране на тестове – последователно.
![Page 84: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/84.jpg)
CentOS OS X Solaris
HUB NODE1 NODE
![Page 85: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/85.jpg)
![Page 86: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/86.jpg)
Пример: Selenium GRID: Стартиране на тестове – паралелно.
![Page 87: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/87.jpg)
![Page 88: Acceptance testing with Selenium 2 and PHPUnit](https://reader036.fdocuments.us/reader036/viewer/2022062319/558c1820d8b42ae2718b4605/html5/thumbnails/88.jpg)
Благодаря за вниманието