SlideShare a Scribd company logo
Webium: Page Object в Python
Игорь Хрол
QA Automation Team Lead
Wargaming.NET
О себе
• Игорь Хрол
• QA Automation Team Lead в
Wargaming.NET
• 9 лет в отрасли
• Инженер, архитектор,
менеджер, консультант, тренер
• Постоянный участник
SeleniumCamp
• www.khroliz.com
Предыстория вопроса
• Не нашлось нужных решений в Python
• Навеяно HtmlElements
(http://htmlelements.qatools.ru/)
Хотелки
• Расширение WebElement’a, а не создание
своей «обёртки»
• Поддержка поиска одного и многих
(find_element и find_elements)
• Вложенный поиск какой угодно глубины
• Ленивая инициализация
Существующие аналоги
Аналоги - Robot Framework Page Objects
https://github.com/ncbi/robotframework-pageobjects
Аналоги - holmium.core
https://github.com/alisaifee/holmium.core
Аналоги - wtframework
https://github.com/wiredrive/wtframework
A что же Webium?
BasePage – базовая
страница
• Можно передавать url страницы
• Если нужно – свой driver
• Описываем стуктуру через Find
Find
• by – как ищем
• value – значение поиска
• Вернёт WebElement в момент обращения
к полю
Пример использования
страницы
text_field и button – обычные WebElement’ы
Типизация
• Наследуемся от WebElement’a
• Доопределяем/переопределяем, что нам надо
Типизация
>> Text to search: webium
Расширенный WebElement с нашими
«хотелками»
Finds
Работает, как Find, но возвращает список
Finds
Поддерживается типизация
В webium.controls
уже есть готовые
компоненты!
Контейнеры
Контейнеры
• Вложенный поиск
• Реиспользование на всех страницах, где
появляется
• Любой типизированный элемент,
наследник WebElement
Контейнеры
Логические контейнеры
is_element_present
• Типовое действие при написании
автотестов
• Каждый делает свой велосипед
• Не так просто сделать корректно
http://seleniumcamp.com/archive/selenium-
camp-2013/materials/mistakes-of-beginners/
is_element_present
>> True
>> False
is_element_present
• Метод есть у BasePage и у любого
контейнера
• Параметры:
– element_name – имя элемента
– just_in_dom – можно проверять только
наличие в DOM’e
– timeout – ждать True на протяжении
таймаута
Динамические страницы
Динамические страницы
• Добавление элементов в страницу «на
лету»
• Страница определена во время
выполнения
• Явное задание контекста поиска
– параметр context в Find
Синхронизация
• https://pypi.python.org/pypi/waiting/
• Обработка WebDriverException
Ну и на десерт напоследок…
Настройки
• webium.settings
– wait_timeout = 30
– default_search_type = By.ID
• local_webium_settings – можно
доопределить своими значениями
implicitly_wait
• webium.settings.implicit_timeout
• По умолчанию 30 секунд
• Автоматически выключается в Finds
Управление webdriver’ом
• webium.settings.driver_class
• nose-плагин по закрытию браузера
• Можно работать со своим, передавая в
BasePage
Спасибо!
Q&A
• Ссылки:
– https://github.com/wgnet/webium
– http://wgnet.github.io/webium/
– https://pypi.python.org/pypi/webium
• Контакты:
Игорь Хрол
i_khrol@wargaming.net
khroliz@gmail.com
skype: igor.khrol
http://www.khroliz.com

More Related Content

What's hot (20)

PPSX
История HERE Maps for Windows: меняемся не изменяя качеству
SQALab
 
PPTX
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
 
PPTX
Типичные ошибки начинающих писать тесты на WebDriver
Igor Khrol
 
ODP
The fast and the continuous
SQALab
 
PPT
Кому следует писать автоматические тесты?
Igor Khrol
 
PPTX
Как играть без игрока
SQALab
 
PPTX
Автоматическое тестирование Web api
Igor Lyubin
 
PDF
Grail: шаги для ваших Python-тестов
CodeFest
 
PDF
Автоматическое тестирование. Моя система
Igor Lyubin
 
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
 
PPTX
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
COMAQA.BY
 
PPTX
Continuous Integration для QA
Ivan Kolodyazhny
 
PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
automated-testing.info
 
PPTX
Go для веба глазами PHP-разработчика
UP2IT
 
PPT
CQRS. Event Sourcing. Особенности тестирования
Uladzimir Kryvenka
 
PPT
Continuous Integration для тестировщиков
Uladzimir Kryvenka
 
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
COMAQA.BY
 
PPTX
Автоматизация тестирования ролей и привилегий
SQALab
 
PPTX
Selenide
ISsoft
 
PPT
Page object with selenide
COMAQA.BY
 
История HERE Maps for Windows: меняемся не изменяя качеству
SQALab
 
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
 
Типичные ошибки начинающих писать тесты на WebDriver
Igor Khrol
 
The fast and the continuous
SQALab
 
Кому следует писать автоматические тесты?
Igor Khrol
 
Как играть без игрока
SQALab
 
Автоматическое тестирование Web api
Igor Lyubin
 
Grail: шаги для ваших Python-тестов
CodeFest
 
Автоматическое тестирование. Моя система
Igor Lyubin
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab
 
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
COMAQA.BY
 
Continuous Integration для QA
Ivan Kolodyazhny
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
automated-testing.info
 
Go для веба глазами PHP-разработчика
UP2IT
 
CQRS. Event Sourcing. Особенности тестирования
Uladzimir Kryvenka
 
Continuous Integration для тестировщиков
Uladzimir Kryvenka
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
COMAQA.BY
 
Автоматизация тестирования ролей и привилегий
SQALab
 
Selenide
ISsoft
 
Page object with selenide
COMAQA.BY
 

More from Igor Khrol (8)

PDF
SeleniumCamp 2016
Igor Khrol
 
PDF
Agile.by Gathering – 23 января 2016
Igor Khrol
 
PPTX
Increase selenium tests stability via java script
Igor Khrol
 
PPTX
Why test automation projects are failing
Igor Khrol
 
PPTX
Автоматизация Тестирования - Почему умирают проекты?
Igor Khrol
 
PPT
Автоматизация тестирования на крупных проектах
Igor Khrol
 
PPTX
Meeting #4. Frameworks.
Igor Khrol
 
PPTX
автоматизация Flex приложений с помощью selenium rc
Igor Khrol
 
SeleniumCamp 2016
Igor Khrol
 
Agile.by Gathering – 23 января 2016
Igor Khrol
 
Increase selenium tests stability via java script
Igor Khrol
 
Why test automation projects are failing
Igor Khrol
 
Автоматизация Тестирования - Почему умирают проекты?
Igor Khrol
 
Автоматизация тестирования на крупных проектах
Igor Khrol
 
Meeting #4. Frameworks.
Igor Khrol
 
автоматизация Flex приложений с помощью selenium rc
Igor Khrol
 
Ad

Webium: Page Objects in Python