SlideShare une entreprise Scribd logo
1  sur  25
Selenium: начало работы Сташевский Павел, 2010 Pavel.Stashevskiy@softline.ru
План мероприятия Попытаемся установить Немного про архитектуру Клиенты для RC Локаторы – гуляем по DOM-дереву Типовые действия Ожидания
Установка Ставим РНР (или Denwer?) Устанавливаем PEAR http://pear.php.net/manual/en/installation.getting.php Теперь PHPUnithttp://www.phpunit.de/manual/3.0/en/installation.html Скачиваем Selenium RChttp://seleniumhq.org/download/ Запускаем SeleniumRC java –jar selenium-server.jar Готово, запускаем тесты!
Немного о том, как все устроено
Клиенты для RC Testing_Selenium Простой клиент на PHP для Selenium RC Нужно использовать TestCaseи TestSuitот PHPUnit Зато большая гибкость PHPUnit_selenium Готовый «продукт-расширение» для PHP и Selenium TestCaseи Selenium в одном лице
Локаторы Локатор - это строка, уникально идентифицирующая UI-элемент. Виды: id=<element_id> name=<element_name> dom=<dom_object> link=<link_text> xpath=<xpath_locator> css=<css_path>
ID <input type=text id='some_input_id' name='some_input_name' value='' /> Самый быстрый по нахождению Самый «уникальный» из локаторов Локатор: id=some_input_id
Name <input type=text id='some_input_id' name='some_input_name' value='' /> Быстрый по скорости Хорошая уникальность, но меньше чем у id Используется, как правило, для полей формы name=some_input_name
Link <a href='http://some_url'>Йассылко</a> Используется для ссылок Если ссылки не уникальны, то кликнет по первой Link=Йассылко Можно использовать Link=Йассылко*
DOM dom=document.forms['myForm'].myDropdown dom=document.images[56] Использует DOM-дерево Медленный и неудобный
XPath xpath=//table[@id='table1']//tr[4]/td[2] xpath=//input[@name='name2' and @value='yes'] xpath=//*[text()="right"] Универсальный для любых объектов Медленный, особенно если длинный, и особенно если IE Избегайте полных путей Ищетсявсе первое //table/tbody/tr/td/a
CSS css=form[name=second_form] Основан на описании таблиц стилей Учитывает иерархию Быстрее чем Xpath, поэтому используйте CSS 
Выбираем тип локатора Используем указание типа локатора (id=, name=, link=, xpath=, css= ) Если тип не задан: Если локатор начинается с '//', то используется XPath.  Если нет какого-либо префикса, то элемент ищется по ID  Если элемент с заданным ID отсутствует, то элемент ищется по атрибуту name.
Средства для поиска FireBug Xpath Checker https://addons.mozilla.org/en-US/firefox/addon/1095/ Selenium IDE
Selenium API Управление сессией (Util) Действия (Action) Проверки (Getы, Isы) Ожидания (Wait)
Управление сессией start() – запускаем сессию stop() – останавливаем сессию setTimeout() – таймаут для ожидания ответа от браузера setSpeed() – скорость, с которой RC посылает команды браузеру
Action. Страница open( $url ) – открывает $url в текущем окне goBack( ) – вернуться назад (по истории в браузере) refresh( ) – обновить страницу в текущем окне close( ) – кликнуть «Закрыть» на всплывающих в popup-окнах openWindow( string $url, string $windowID) – открыть всплывающее окно, потом выбрать с помощью selectWindow( string $windowID)
Action. Компоненты type( string $locator, string $value) – устанавливает $value в любой input field click( string $locator) – кликает на link, button, checkbox илиradio button clickAt( string $locator, string $coordString) - кликает на link, button, checkbox или radio button, учитывает позицию (’10,20’) submit( string $formLocator) – отправить форму
Action. Компоненты check( string $locator) – установить checkbox, отличается от click!!! uncheck( string $locator) – убрать выделение checkbox select( string $selectLocator, string $optionLocator) – выбрать значение в списке removeSelection( string $locator, string $optionLocator) – удалить выбранное значение removeAllSelections( string $locator) – удалить все значения (для множеств. списков)
Action. Другие фишки runScript( string $script) – выполнить скрипт на странице doubleClick( string $locator) – двойной клик по всему, чему можно doubleClickAt( string $locator) – двойной клик по всему чему нужно с координатами
Ожидания (Wait) waitForCondition( string $script, string $timeout) waitForPageToLoad( string $timeout) waitForPopUp( string $windowID, string $timeout) waitForFrameToLoad( string $frameAddress, string $timeout)
Получаем информацию со страницы isChecked( string $locator) isEditable( string $locator) isElementPresent( string $locator) isOrdered( string $locator1, string $locator2)
Получаем информацию со страницы array getAllButtons( ) array getAllFields( ) array getAllLinks( ) getBodyText( ) getText( string $locator) getTitle( ) getValue( string $locator) – возращает значение атрибута value
Презенташка!!! <?php require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class Example extends PHPUnit_Extensions_SeleniumTestCase {   protected function setUp()   {     $this->setBrowser("*googlechrome");     $this->setBrowserUrl("http://allsoft.ru/"); }   public function testMyTestCase()   {     $this->open("/");     $this->type("q", "kaspersky");     $this->submit("name=search");     $this->waitForPageToLoad("30000"); $this->assertTrue($this->isTextPresent("Kaspersky Internet Security"));   } } ?>
Вопросы Pavel.Stashevskiy@softline.ru Skype: pavel.stashevsky_sl

Contenu connexe

Tendances

Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаtfmailru
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переигралEugene Zharkov
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...sqadays8
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQAFest
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9Technopark
 
Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupTimophy Chaptykov
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8Technopark
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euAndrei Solntsev
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевYandex
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Ontico
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование версткиTalks&Works
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчётыbearoff
 

Tendances (20)

Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профи
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9
 
Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать Makeup
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
Component Inspector
Component InspectorComponent Inspector
Component Inspector
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр Кошелев
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...Пользователь точно оценит! Повышение производительности мобильных приложений ...
Пользователь точно оценит! Повышение производительности мобильных приложений ...
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
 

En vedette

Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDEISsoft
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for TestersJosiah Renaudin
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumvyacheslavmaslov
 
Основы Git
Основы GitОсновы Git
Основы Gitoelifantiev
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationSQALab
 
Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиковSQALab
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочинеAlexei Lupan
 
Easy selenium test automation on python
Easy selenium test automation on pythonEasy selenium test automation on python
Easy selenium test automation on pythonMykhailo Poliarush
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in PythonIgor Khrol
 
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...Edureka!
 
Функциональные возможности ИКС
Функциональные возможности ИКСФункциональные возможности ИКС
Функциональные возможности ИКСDiamantigor Igor.Suharev
 
ИКС - комплексное решение сетевой безопасности
ИКС - комплексное решение сетевой безопасностиИКС - комплексное решение сетевой безопасности
ИКС - комплексное решение сетевой безопасностиDiamantigor Igor.Suharev
 

En vedette (13)

Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDE
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for Testers
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Selenium
 
Основы Git
Основы GitОсновы Git
Основы Git
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиков
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
 
Easy selenium test automation on python
Easy selenium test automation on pythonEasy selenium test automation on python
Easy selenium test automation on python
 
Selenium
SeleniumSelenium
Selenium
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in Python
 
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
 
Функциональные возможности ИКС
Функциональные возможности ИКСФункциональные возможности ИКС
Функциональные возможности ИКС
 
ИКС - комплексное решение сетевой безопасности
ИКС - комплексное решение сетевой безопасностиИКС - комплексное решение сетевой безопасности
ИКС - комплексное решение сетевой безопасности
 

Similaire à Selenium: начало работы

Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIAGetDev.NET
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evroneit-people
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Rambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и SwiftRambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и SwiftRAMBLER&Co
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Oleksii Okhrymenko
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченкоsolit
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest
 

Similaire à Selenium: начало работы (20)

Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIA
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 
RoboGuice
RoboGuiceRoboGuice
RoboGuice
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Rambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и SwiftRambler.iOS #5: VIPER и Swift
Rambler.iOS #5: VIPER и Swift
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Devcamp nodejs-2010
Devcamp nodejs-2010Devcamp nodejs-2010
Devcamp nodejs-2010
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
 

Selenium: начало работы

  • 1. Selenium: начало работы Сташевский Павел, 2010 Pavel.Stashevskiy@softline.ru
  • 2. План мероприятия Попытаемся установить Немного про архитектуру Клиенты для RC Локаторы – гуляем по DOM-дереву Типовые действия Ожидания
  • 3. Установка Ставим РНР (или Denwer?) Устанавливаем PEAR http://pear.php.net/manual/en/installation.getting.php Теперь PHPUnithttp://www.phpunit.de/manual/3.0/en/installation.html Скачиваем Selenium RChttp://seleniumhq.org/download/ Запускаем SeleniumRC java –jar selenium-server.jar Готово, запускаем тесты!
  • 4. Немного о том, как все устроено
  • 5. Клиенты для RC Testing_Selenium Простой клиент на PHP для Selenium RC Нужно использовать TestCaseи TestSuitот PHPUnit Зато большая гибкость PHPUnit_selenium Готовый «продукт-расширение» для PHP и Selenium TestCaseи Selenium в одном лице
  • 6. Локаторы Локатор - это строка, уникально идентифицирующая UI-элемент. Виды: id=<element_id> name=<element_name> dom=<dom_object> link=<link_text> xpath=<xpath_locator> css=<css_path>
  • 7. ID <input type=text id='some_input_id' name='some_input_name' value='' /> Самый быстрый по нахождению Самый «уникальный» из локаторов Локатор: id=some_input_id
  • 8. Name <input type=text id='some_input_id' name='some_input_name' value='' /> Быстрый по скорости Хорошая уникальность, но меньше чем у id Используется, как правило, для полей формы name=some_input_name
  • 9. Link <a href='http://some_url'>Йассылко</a> Используется для ссылок Если ссылки не уникальны, то кликнет по первой Link=Йассылко Можно использовать Link=Йассылко*
  • 10. DOM dom=document.forms['myForm'].myDropdown dom=document.images[56] Использует DOM-дерево Медленный и неудобный
  • 11. XPath xpath=//table[@id='table1']//tr[4]/td[2] xpath=//input[@name='name2' and @value='yes'] xpath=//*[text()="right"] Универсальный для любых объектов Медленный, особенно если длинный, и особенно если IE Избегайте полных путей Ищетсявсе первое //table/tbody/tr/td/a
  • 12. CSS css=form[name=second_form] Основан на описании таблиц стилей Учитывает иерархию Быстрее чем Xpath, поэтому используйте CSS 
  • 13. Выбираем тип локатора Используем указание типа локатора (id=, name=, link=, xpath=, css= ) Если тип не задан: Если локатор начинается с '//', то используется XPath. Если нет какого-либо префикса, то элемент ищется по ID Если элемент с заданным ID отсутствует, то элемент ищется по атрибуту name.
  • 14. Средства для поиска FireBug Xpath Checker https://addons.mozilla.org/en-US/firefox/addon/1095/ Selenium IDE
  • 15. Selenium API Управление сессией (Util) Действия (Action) Проверки (Getы, Isы) Ожидания (Wait)
  • 16. Управление сессией start() – запускаем сессию stop() – останавливаем сессию setTimeout() – таймаут для ожидания ответа от браузера setSpeed() – скорость, с которой RC посылает команды браузеру
  • 17. Action. Страница open( $url ) – открывает $url в текущем окне goBack( ) – вернуться назад (по истории в браузере) refresh( ) – обновить страницу в текущем окне close( ) – кликнуть «Закрыть» на всплывающих в popup-окнах openWindow( string $url, string $windowID) – открыть всплывающее окно, потом выбрать с помощью selectWindow( string $windowID)
  • 18. Action. Компоненты type( string $locator, string $value) – устанавливает $value в любой input field click( string $locator) – кликает на link, button, checkbox илиradio button clickAt( string $locator, string $coordString) - кликает на link, button, checkbox или radio button, учитывает позицию (’10,20’) submit( string $formLocator) – отправить форму
  • 19. Action. Компоненты check( string $locator) – установить checkbox, отличается от click!!! uncheck( string $locator) – убрать выделение checkbox select( string $selectLocator, string $optionLocator) – выбрать значение в списке removeSelection( string $locator, string $optionLocator) – удалить выбранное значение removeAllSelections( string $locator) – удалить все значения (для множеств. списков)
  • 20. Action. Другие фишки runScript( string $script) – выполнить скрипт на странице doubleClick( string $locator) – двойной клик по всему, чему можно doubleClickAt( string $locator) – двойной клик по всему чему нужно с координатами
  • 21. Ожидания (Wait) waitForCondition( string $script, string $timeout) waitForPageToLoad( string $timeout) waitForPopUp( string $windowID, string $timeout) waitForFrameToLoad( string $frameAddress, string $timeout)
  • 22. Получаем информацию со страницы isChecked( string $locator) isEditable( string $locator) isElementPresent( string $locator) isOrdered( string $locator1, string $locator2)
  • 23. Получаем информацию со страницы array getAllButtons( ) array getAllFields( ) array getAllLinks( ) getBodyText( ) getText( string $locator) getTitle( ) getValue( string $locator) – возращает значение атрибута value
  • 24. Презенташка!!! <?php require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class Example extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() { $this->setBrowser("*googlechrome"); $this->setBrowserUrl("http://allsoft.ru/"); } public function testMyTestCase() { $this->open("/"); $this->type("q", "kaspersky"); $this->submit("name=search"); $this->waitForPageToLoad("30000"); $this->assertTrue($this->isTextPresent("Kaspersky Internet Security")); } } ?>