webium: page objects in python

31
Webium: Page Object в Python Игорь Хрол QA Automation Team Lead Wargaming.NET

Upload: igor-khrol

Post on 15-Jul-2015

6.921 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Webium: Page Objects in Python

Webium: Page Object в Python

Игорь Хрол

QA Automation Team Lead

Wargaming.NET

Page 2: Webium: Page Objects in Python

О себе

• Игорь Хрол

• QA Automation Team Lead в Wargaming.NET

• 9 лет в отрасли

• Инженер, архитектор, менеджер, консультант, тренер

• Постоянный участник SeleniumCamp

• www.khroliz.com

Page 3: Webium: Page Objects in Python

Предыстория вопроса

• Не нашлось нужных решений в Python

• Навеяно HtmlElements(http://htmlelements.qatools.ru/)

Page 4: Webium: Page Objects in Python

Хотелки• Расширение WebElement’a, а не создание

своей «обёртки»

• Поддержка поиска одного и многих (find_element и find_elements)

• Вложенный поиск какой угодно глубины

• Ленивая инициализация

Page 5: Webium: Page Objects in Python

Существующие аналоги

Page 6: Webium: Page Objects in Python

Аналоги - Robot Framework Page Objects

https://github.com/ncbi/robotframework-pageobjects

Page 7: Webium: Page Objects in Python

Аналоги - holmium.corehttps://github.com/alisaifee/holmium.core

Page 8: Webium: Page Objects in Python

Аналоги - wtframeworkhttps://github.com/wiredrive/wtframework

Page 9: Webium: Page Objects in Python

A что же Webium?

Page 10: Webium: Page Objects in Python

BasePage – базовая страница

• Можно передавать url страницы

• Если нужно – свой driver

• Описываем стуктуру через Find

Page 11: Webium: Page Objects in Python

Find

• by – как ищем

• value – значение поиска

• Вернёт WebElement в момент обращения к полю

Page 12: Webium: Page Objects in Python

Пример использования страницы

text_field и button – обычные WebElement’ы

Page 13: Webium: Page Objects in Python

Типизация

• Наследуемся от WebElement’a

• Доопределяем/переопределяем, что нам надо

Page 14: Webium: Page Objects in Python

Типизация

>> Text to search: webium

Расширенный WebElement с нашими «хотелками»

Page 15: Webium: Page Objects in Python

Finds

Работает, как Find, но возвращает список

Page 16: Webium: Page Objects in Python

Finds

Поддерживается типизация

В webium.controlsуже есть готовые

компоненты!

Page 17: Webium: Page Objects in Python

Контейнеры

Page 18: Webium: Page Objects in Python

Контейнеры

• Вложенный поиск

• Реиспользование на всех страницах, где появляется

• Любой типизированный элемент, наследник WebElement

Page 19: Webium: Page Objects in Python

Контейнеры

Page 20: Webium: Page Objects in Python

Логические контейнеры

Page 21: Webium: Page Objects in Python

is_element_present

• Типовое действие при написании автотестов

• Каждый делает свой велосипед

• Не так просто сделать корректно http://seleniumcamp.com/archive/selenium-camp-2013/materials/mistakes-of-beginners/

Page 22: Webium: Page Objects in Python

is_element_present

>> True

>> False

Page 23: Webium: Page Objects in Python

is_element_present

• Метод есть у BasePage и у любого контейнера

• Параметры:

– element_name – имя элемента

– just_in_dom – можно проверять только наличие в DOM’e

– timeout – ждать True на протяжении таймаута

Page 24: Webium: Page Objects in Python

Динамические страницы

Page 25: Webium: Page Objects in Python

Динамические страницы

• Добавление элементов в страницу «на лету»

• Страница определена во время выполнения

• Явное задание контекста поиска

– параметр context в Find

Page 26: Webium: Page Objects in Python

Синхронизация

• https://pypi.python.org/pypi/waiting/

• Обработка WebDriverException

Page 27: Webium: Page Objects in Python

Ну и на десерт напоследок…

Page 28: Webium: Page Objects in Python

Настройки

• webium.settings

– wait_timeout = 30

– default_search_type = By.ID

• local_webium_settings – можно доопределить своими значениями

Page 29: Webium: Page Objects in Python

implicitly_wait

• webium.settings.implicit_timeout

• По умолчанию 30 секунд

• Автоматически выключается в Finds

Page 30: Webium: Page Objects in Python

Управление webdriver’ом

• webium.settings.driver_class

• nose-плагин по закрытию браузера

• Можно работать со своим, передавая в BasePage

Page 31: Webium: Page Objects in Python

Спасибо!Q&A

• Ссылки:– https://github.com/wgnet/webium

– http://wgnet.github.io/webium/

– https://pypi.python.org/pypi/webium

• Контакты:Игорь Хрол

[email protected]

[email protected]

skype: igor.khrol

http://www.khroliz.com