SlideShare a Scribd company logo
Selenium: приемы работыСташевский Павел, 2010
План мероприятия1. Работа с AJAX-интерфейсами2. WYSWYG3. Файлы: загрузка и скачивание
Ожидание событий   Зачем ждать?Selenium RC не отработает на том интерфейсе, которого нетИмитируем действия пользователяЧто ждать?Клиентский JSAJAXНе всегда отработаетВремя тестов растетsleep(5);
Ожидание событийwhile(!isElementPresent(‘locator’)) {	sleep(1);}Бесконечный циклЭто не наши методы!!!
Нормальное ожидание событияpublic function waitElementExist($sLocator, $iTimeout = null) {    $iTimeout = (isset($iTimeout) ? $iTimeout : 180000) / 1000;    $iStartTime = time();    while (!$this-isElementPresent($sLocator)) {	sleep(1);	if (time() - $iStartTime > $iTimeout) {		return false;}}    return true;}Это наши методы!!!
Работаем с popupopenWindow( string $url, string $windowID) – открsть всплывающее окноselectWindow( string $windowID) – переключится на всплывающее окноwaitForPopUp( string $windowID, string $timeout) – ждать, пока попап появится
WYSWYGSelenium не умеет работать с WYSWYGПриходится писать JSДля тестов, как правило, требуются операции: добавить текст, проверить текст
WYSWYGclass CSlWYSWYGField{public function check($mValue) {    }public function fill($mValue) {    }public function clean() {    }}Пишем один разИспользуем много раз
WYSWYG. Записьpublic function fill($mValue) {    $sScript = "document.getElementById(‘Locator_ifr’).contentDocument.documentElement.childNodes[1].innerHTML     = '" . $mValue. "';";    $this->runScript($sScript);}
WYSWYG.Проверка значенияpublic function check($mValue) {    $sScript = "window.document.getElementById(‘Locator_ifr’).contentDocument.documentElement.childNodes[1].firstChild.innerHTML;";    $mFormValue = $this->getEval($sScript);    return $mFormValue == $mValue ? true : false;}getEval( string $script) -  возвращает результат выполнения  $ script
Работа с файламиТестирование загрузки файлов (например, аватар)Тестирование скачивания файлов Файлы нужно где-то хранитьИспользовать сервер, на котором выполняются тестыИспользовать FTP-сервер
Загрузка файлаtype( string $locator, string $value)Может использоваться только в “*chrome”В остальных случаях используем имитацию нажатия клавиш клавиатуры с помощью:keyDownNative( string $keycode)  - нажать клавишу без отпусканияkeyUpNative( string $keycode) -  отпустить клавишуkeyPressNative( string $keycode) – нажать клавишу клавиатуры и отпустить
Загрузка файла. Примерpublic function fill($mValue) {	$this->windowFocus();	$this->click(‘locator_input’);	sleep(1);foreach(str_split($mValue) as $sChar) { 		if ($sChar == ':') {			$this->keyDownNative(‘16’);			$this->keyPressNative(’59’); 			$this->keyUpNative(‘16’);	...	sleep(1);}
Скачивание файловattachFile( string $fieldLocator, string $fileLocator) – скачивает файл $fieldLocatorв указанную директорию $fileLocatorpublic function testDownloadFile() {    // что-то делаем до скачивания файла$this->attachFile(‘link=Скачать файл’, ‘S:\file.txt’);//что-то делаем после скачивания файла}Может использоваться только в “*chrome”В других браузерах используем key…Проблема: по-разному во всех браузерах
Проблемы SeleniumПроблема работы с различным тестовым окружением (тесты + phpunit+ selenium rc + браузеры + ОС)Миф о кроссбраузерности тестовПроблемы с авторизацией open(login:password@url);Selenium не все может
ВопросыPavel.Stashevskiy@softline.ruSkype: pavel.stashevsky_sl

More Related Content

PPTX
Selenium: начало работы
PPTX
XPath локаторы в Selenium WebDriver
PPT
Подробная презентация JavaScript 6 в 1
PPTX
Selenium vs AJAX
PPT
Модульное тестирование iOS-приложений.
PPTX
Нетривиальная обработка ошибок
PDF
RDSDataSource: Чистые тесты на Swift
PDF
Автоматизация UI тестирования под Windows и Windows Phone
Selenium: начало работы
XPath локаторы в Selenium WebDriver
Подробная презентация JavaScript 6 в 1
Selenium vs AJAX
Модульное тестирование iOS-приложений.
Нетривиальная обработка ошибок
RDSDataSource: Чистые тесты на Swift
Автоматизация UI тестирования под Windows и Windows Phone

What's hot (20)

PPTX
Владимир Горбенко «Использование блоков в Objective-C»
PPT
Alexander manuhin selenium_php_v2.0
PDF
Филипп Ковалев — Путь в npm
PDF
QA Fest 2019. Андрей Солнцев. Selenide для профи
PPT
Web весна 2012 лекция 9
PDF
RDSDataSource: Promises
PPTX
Selenium, а давай подождем?
PPTX
Web осень 2013 лекция 8
PPT
Web весна 2013 лекция 9
PPTX
Коротко о React.js
PPT
Javascript
PDF
Web осень 2013 лекция 2
PPT
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
PPTX
Григорий Демченко, Асинхронность и неблокирующая синхронизация
PDF
JPoint 2015 - Javassist на службе Java-разработчика
PPTX
Григорий Демченко, Универсальный адаптер
PDF
Parallel STL
PDF
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
PPTX
Web осень 2013 лекция 9
PDF
Асинхронный JavaScript
Владимир Горбенко «Использование блоков в Objective-C»
Alexander manuhin selenium_php_v2.0
Филипп Ковалев — Путь в npm
QA Fest 2019. Андрей Солнцев. Selenide для профи
Web весна 2012 лекция 9
RDSDataSource: Promises
Selenium, а давай подождем?
Web осень 2013 лекция 8
Web весна 2013 лекция 9
Коротко о React.js
Javascript
Web осень 2013 лекция 2
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Григорий Демченко, Асинхронность и неблокирующая синхронизация
JPoint 2015 - Javassist на службе Java-разработчика
Григорий Демченко, Универсальный адаптер
Parallel STL
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
Web осень 2013 лекция 9
Асинхронный JavaScript
Ad

Similar to Selenium: приемы работы (20)

PPTX
Типичные ошибки начинающих писать тесты на WebDriver
PPTX
iOS and Android Mobile Test Automation
PDF
Mobile automation uamobile
PPTX
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
PDF
FPUG Dzyga presentation
PPT
Подробная презентация JavaScript 6 в 1
PPTX
Unit тестирование
PPTX
Тестирование отклика Web-интерфейса с JMeter и Selenium
PPT
Selenium 2.0: обзор новых возможностей
PPTX
course js day 4
PPTX
Человекопонятные отчёты
PPTX
I tmozg js_school
ODP
Unit test быстрый старт
PDF
Опыт разработки эффективного SPA
PDF
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
PPTX
JavaScript как объектно-ориентированный язык программирования
PPTX
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
PPTX
I tmozg js_school_jquery
PPT
Yii development
PPTX
Тестирование spring boot приложений
Типичные ошибки начинающих писать тесты на WebDriver
iOS and Android Mobile Test Automation
Mobile automation uamobile
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
FPUG Dzyga presentation
Подробная презентация JavaScript 6 в 1
Unit тестирование
Тестирование отклика Web-интерфейса с JMeter и Selenium
Selenium 2.0: обзор новых возможностей
course js day 4
Человекопонятные отчёты
I tmozg js_school
Unit test быстрый старт
Опыт разработки эффективного SPA
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
JavaScript как объектно-ориентированный язык программирования
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
I tmozg js_school_jquery
Yii development
Тестирование spring boot приложений
Ad

Selenium: приемы работы

  • 2. План мероприятия1. Работа с AJAX-интерфейсами2. WYSWYG3. Файлы: загрузка и скачивание
  • 3. Ожидание событий Зачем ждать?Selenium RC не отработает на том интерфейсе, которого нетИмитируем действия пользователяЧто ждать?Клиентский JSAJAXНе всегда отработаетВремя тестов растетsleep(5);
  • 5. Нормальное ожидание событияpublic function waitElementExist($sLocator, $iTimeout = null) { $iTimeout = (isset($iTimeout) ? $iTimeout : 180000) / 1000; $iStartTime = time(); while (!$this-isElementPresent($sLocator)) { sleep(1); if (time() - $iStartTime > $iTimeout) { return false;}} return true;}Это наши методы!!!
  • 6. Работаем с popupopenWindow( string $url, string $windowID) – открsть всплывающее окноselectWindow( string $windowID) – переключится на всплывающее окноwaitForPopUp( string $windowID, string $timeout) – ждать, пока попап появится
  • 7. WYSWYGSelenium не умеет работать с WYSWYGПриходится писать JSДля тестов, как правило, требуются операции: добавить текст, проверить текст
  • 8. WYSWYGclass CSlWYSWYGField{public function check($mValue) { }public function fill($mValue) { }public function clean() { }}Пишем один разИспользуем много раз
  • 9. WYSWYG. Записьpublic function fill($mValue) { $sScript = "document.getElementById(‘Locator_ifr’).contentDocument.documentElement.childNodes[1].innerHTML = '" . $mValue. "';"; $this->runScript($sScript);}
  • 10. WYSWYG.Проверка значенияpublic function check($mValue) { $sScript = "window.document.getElementById(‘Locator_ifr’).contentDocument.documentElement.childNodes[1].firstChild.innerHTML;"; $mFormValue = $this->getEval($sScript); return $mFormValue == $mValue ? true : false;}getEval( string $script) - возвращает результат выполнения $ script
  • 11. Работа с файламиТестирование загрузки файлов (например, аватар)Тестирование скачивания файлов Файлы нужно где-то хранитьИспользовать сервер, на котором выполняются тестыИспользовать FTP-сервер
  • 12. Загрузка файлаtype( string $locator, string $value)Может использоваться только в “*chrome”В остальных случаях используем имитацию нажатия клавиш клавиатуры с помощью:keyDownNative( string $keycode) - нажать клавишу без отпусканияkeyUpNative( string $keycode) - отпустить клавишуkeyPressNative( string $keycode) – нажать клавишу клавиатуры и отпустить
  • 13. Загрузка файла. Примерpublic function fill($mValue) { $this->windowFocus(); $this->click(‘locator_input’); sleep(1);foreach(str_split($mValue) as $sChar) { if ($sChar == ':') { $this->keyDownNative(‘16’); $this->keyPressNative(’59’); $this->keyUpNative(‘16’); ... sleep(1);}
  • 14. Скачивание файловattachFile( string $fieldLocator, string $fileLocator) – скачивает файл $fieldLocatorв указанную директорию $fileLocatorpublic function testDownloadFile() { // что-то делаем до скачивания файла$this->attachFile(‘link=Скачать файл’, ‘S:\file.txt’);//что-то делаем после скачивания файла}Может использоваться только в “*chrome”В других браузерах используем key…Проблема: по-разному во всех браузерах
  • 15. Проблемы SeleniumПроблема работы с различным тестовым окружением (тесты + phpunit+ selenium rc + браузеры + ОС)Миф о кроссбраузерности тестовПроблемы с авторизацией open(login:password@url);Selenium не все может