SlideShare ist ein Scribd-Unternehmen logo
1 von 31
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

Weitere ähnliche Inhalte

Was ist angesagt?

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

Was ist angesagt? (20)

История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
 
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Кому следует писать автоматические тесты?
Кому следует писать автоматические тесты?Кому следует писать автоматические тесты?
Кому следует писать автоматические тесты?
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindingsSelenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QA
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 
CQRS. Event Sourcing. Особенности тестирования
CQRS. Event Sourcing. Особенности тестированияCQRS. Event Sourcing. Особенности тестирования
CQRS. Event Sourcing. Особенности тестирования
 
Continuous Integration для тестировщиков
Continuous Integration для тестировщиковContinuous Integration для тестировщиков
Continuous Integration для тестировщиков
 
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Selenide
SelenideSelenide
Selenide
 
Page object with selenide
Page object with selenidePage object with selenide
Page object with selenide
 

Ähnlich wie Webium: Page Objects in Python

Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьSQALab
 
SEO-аудит своими силами / Вебинар WebPromoExperts
SEO-аудит своими силами / Вебинар WebPromoExpertsSEO-аудит своими силами / Вебинар WebPromoExperts
SEO-аудит своими силами / Вебинар WebPromoExpertsСергей Кокшаров
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in pythonCOMAQA.BY
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлdrupalconf
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтовPlaytini
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтовЕвгений Летов
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлdrupalconf
 
Seo for drupal
Seo for drupalSeo for drupal
Seo for drupalmanin_d
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлPVasili
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Dakiry
 
10+ ошибок веб-разработчиков с точки зрения SEO
10+ ошибок веб-разработчиков с точки зрения SEO10+ ошибок веб-разработчиков с точки зрения SEO
10+ ошибок веб-разработчиков с точки зрения SEOЕвгений Летов
 
10+ ошибок веб-разработчиков с примерами
10+ ошибок веб-разработчиков с примерами10+ ошибок веб-разработчиков с примерами
10+ ошибок веб-разработчиков с примерамиЕвгений Летов
 
Polymer - New Era of Web Development
Polymer - New Era of Web DevelopmentPolymer - New Era of Web Development
Polymer - New Era of Web DevelopmentAlexander Kirillov
 
SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016Yuriy Khait
 

Ähnlich wie Webium: Page Objects in Python (20)

Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
 
SEO-аудит своими силами / Вебинар WebPromoExperts
SEO-аудит своими силами / Вебинар WebPromoExpertsSEO-аудит своими силами / Вебинар WebPromoExperts
SEO-аудит своими силами / Вебинар WebPromoExperts
 
SEO-аудит своими руками
SEO-аудит своими рукамиSEO-аудит своими руками
SEO-аудит своими руками
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in python
 
Аудит сайта своими силами
Аудит сайта своими силамиАудит сайта своими силами
Аудит сайта своими силами
 
SEO-аудит своими руками. Вебинар WebPromoExperts #106
SEO-аудит своими руками. Вебинар WebPromoExperts #106SEO-аудит своими руками. Вебинар WebPromoExperts #106
SEO-аудит своими руками. Вебинар WebPromoExperts #106
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
Migrate!
Migrate!Migrate!
Migrate!
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Seo for drupal
Seo for drupalSeo for drupal
Seo for drupal
 
Seo for drupal
Seo for drupalSeo for drupal
Seo for drupal
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
 
10+ ошибок веб-разработчиков с точки зрения SEO
10+ ошибок веб-разработчиков с точки зрения SEO10+ ошибок веб-разработчиков с точки зрения SEO
10+ ошибок веб-разработчиков с точки зрения SEO
 
10+ ошибок веб-разработчиков с примерами
10+ ошибок веб-разработчиков с примерами10+ ошибок веб-разработчиков с примерами
10+ ошибок веб-разработчиков с примерами
 
Polymer - New Era of Web Development
Polymer - New Era of Web DevelopmentPolymer - New Era of Web Development
Polymer - New Era of Web Development
 
SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016
 

Mehr von Igor Khrol

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

Mehr von Igor Khrol (8)

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

Webium: Page Objects in Python