38
Appium + Selenide: Cross- Platform Mobile QA Automation. Is it possible and what are the benefits? Семенченко Антон Issoft / Coherent Solutions www.COMAQA.BY www.DPI.Solutions

Appium + selenide comaqa.by. Антон Семенченко

Embed Size (px)

Citation preview

Page 1: Appium + selenide comaqa.by. Антон Семенченко

Appium + Selenide: Cross-Platform Mobile QA Automation. Is it possible

and what are the benefits?

Семенченко АнтонIssoft / Coherent Solutions

www.COMAQA.BYwww.DPI.Solutions

Page 2: Appium + selenide comaqa.by. Антон Семенченко

Поговорим…

• Несколько слов об Appium

• Что такое Selenide?

• Как можно “скрестить” Appium и Selenide

• Что из всего этого вышло?

Page 3: Appium + selenide comaqa.by. Антон Семенченко

Appium - …

• Appium — инструмент для автоматизации мобильных приложений, использующий Webdriver API.

• Appium – HTTP сервер, который создает и управляет сессиями Webdriver.

Page 4: Appium + selenide comaqa.by. Антон Семенченко

App + oppium = ?

Webdriver

Адаптеры для браузеров

Appium, Selendroid, IOSdriver

JSON Wire Protocol

Mobile JSON Wire Protocol

Page 5: Appium + selenide comaqa.by. Антон Семенченко

WebDriver API. Бонусы?

• Тесты на любом языке программирования.

• Интеграция с любым тестовым фреймворком.

• Selenium Grid для распределенного запуска тестов.

• Тысячи девелоперов и QA специалистов используют Webdriver и знакомы с его моделью.

Page 6: Appium + selenide comaqa.by. Антон Семенченко

Под капотом Appium

AppiumMarionetteUIAutomation

SelendroidUIAutomator

Page 7: Appium + selenide comaqa.by. Антон Семенченко

Под капотом IOS

На IOS appium замещает команды от webdriver на понятные UIAutomation скрипту, запущенному в Instruments.

Page 8: Appium + selenide comaqa.by. Антон Семенченко

Под капотом Android

На Android appium транслирует команды от webdriver на понятные UIAutomator скрипту, запущенному на устройстве.

Page 9: Appium + selenide comaqa.by. Антон Семенченко

Под капотом Selendroid

При автоматизации Android можно выбирать между Selendroid и UIAutomator.

Page 10: Appium + selenide comaqa.by. Антон Семенченко

Инновации

Appium делает возможным создание кроссплатформенных тестов

Page 11: Appium + selenide comaqa.by. Антон Семенченко

Пример

Гибридные приложения, постороенные с использованием :

И

Page 12: Appium + selenide comaqa.by. Антон Семенченко
Page 13: Appium + selenide comaqa.by. Антон Семенченко

Что же такое Selenide?

Selenide — это прозрачная обёртка вокруг Selenium WebDriver, не мешающая опуститься до уровня голого Driver-а, позволяющая быстро и просто использовать все возможности Selenium при разработке тестов, сосредоточившись на логике, а не суете с браузером + целый ряд дополнительных возможностей. 

Page 14: Appium + selenide comaqa.by. Антон Семенченко

UI тесты Selenium 2 WebDriver + Java

Page 15: Appium + selenide comaqa.by. Антон Семенченко

Что в этом коде нам не нравится?

• Сложная инициализация• А как же скриншоты?• Объём кода • Сложность кода

Раньше все эти «сложности» ложилось на наши плечи!

Page 16: Appium + selenide comaqa.by. Антон Семенченко

Простой тест с Selenide

Page 17: Appium + selenide comaqa.by. Антон Семенченко

Инициализация браузера с помощью Selenium 2 WebDriver

Page 18: Appium + selenide comaqa.by. Антон Семенченко

Инициализация браузера с помощью Selenide

Page 19: Appium + selenide comaqa.by. Антон Семенченко

«Свойства»: Url, title и page source

• Selenium

• Selenide

Page 20: Appium + selenide comaqa.by. Антон Семенченко

Поиск элементов

• Selenium

• Selenide

Page 21: Appium + selenide comaqa.by. Антон Семенченко

Selenium & Radio buttons

Page 22: Appium + selenide comaqa.by. Антон Семенченко

Selenide & Radio buttons

Page 23: Appium + selenide comaqa.by. Антон Семенченко

Asserts

• Selenium

• Selenide

Page 24: Appium + selenide comaqa.by. Антон Семенченко

Alerts

• Selenium

• Selenide

Page 25: Appium + selenide comaqa.by. Антон Семенченко

Selenium & Ajax

Page 26: Appium + selenide comaqa.by. Антон Семенченко

Selenide & Ajax

Page 27: Appium + selenide comaqa.by. Антон Семенченко

Как подружить?

+

Page 28: Appium + selenide comaqa.by. Антон Семенченко

Проблема

Appium имеет ряд собственных сущностей:

• AppiumDriver• MobileElement• MobileBy

Page 29: Appium + selenide comaqa.by. Антон Семенченко

К счастью

AppiumDriver implements WebDriver

MobileElement implements WebElement

MobileBy extends By

Page 30: Appium + selenide comaqa.by. Антон Семенченко

А значит

Selenide может работать с ними так же, как и с «оригинальными» WebDriver, WebElement и By

Page 31: Appium + selenide comaqa.by. Антон Семенченко

Передаем Selenide нужный драйвер

Implements WebDriver?OK!

Page 32: Appium + selenide comaqa.by. Антон Семенченко

Selenide отлично работает со всеми селекторами

MobileBy?OK!

Page 33: Appium + selenide comaqa.by. Антон Семенченко

Специфичные действия

Нужны Android-actions?Кастуйте!

Page 34: Appium + selenide comaqa.by. Антон Семенченко

Helpers

Создайте Helper-класс, со всеми специфичными действиями

Page 35: Appium + selenide comaqa.by. Антон Семенченко

Nuff said

Page 36: Appium + selenide comaqa.by. Антон Семенченко

Итого. Что мы получаем?

• Автоматическая синхронизация с

приложением

• Удобные ассерты и матчеры,

реализованные в should методах

• Удобный и краткий API синтаксис

• Статический доступ к driver intsance

Page 37: Appium + selenide comaqa.by. Антон Семенченко

Итого. Вынужденные “хаки”

• Хелперы для исключительно

“мобильных методов” MobileDriver и

MobileWebElement

• Хелперы для сложных взаимодествий

(actions)

Page 38: Appium + selenide comaqa.by. Антон Семенченко

Спасибо за внимание

АнтонСеменченко Опыт в IT 12 более лет

CSO, Co-founder, IT Consultant вDPI.SolutionsQA Automation Activist в COMAQA.BYC++ Architect, QA Automation Department Manager, Project Manager, Resource Manager, Process manager вISSoft / Coherent Solutions