SlideShare une entreprise Scribd logo
1  sur  28
Software quality assurance days
20 Международная конференция
по вопросам качества ПО
sqadays.com
Минск. 24–26 ноября
Василий Рябов
Aquantia. Нижний Новгород, Россия
Автоматизируем GUI тесты на питоне:
как подружились pywinauto и MS UI
Automation
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Автоматизация десктопного GUI
Задачи:
(1) уметь управлять GUI приложением
(2) уметь получать текстовые данные из него
Проблема: нет единых стандартов
- разные оконные / widget системы
- огромное разнообразие фреймворков и библиотек
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Известные подходы
1. Координатный метод (autopy, PyAutoGUI)
click(120, 170)
type_keys(“If I was lucky, I'd be at the edit box.”)
2. Распознавание изображений (Sikuli, Lackey)
find(“OK_button.png”).click()
3. Accessibility технологии
btn = window(title_re=”Browse.*”, class_name=”Button”)
btn.get_text()
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Accessibility технологии
MS UI Automation
WinForms, WPF, Qt, браузеры,
Store apps (Inspect.exe)
Apple Accessibility API
Cocoa, ...
AT SPI (через Dbus)
Qt, GTK, wxWidgets, ...
Win32 API
MFC, VCL, частично WinForms
(Spy++)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Open Source Tools for Win32 API
AutoIt
Большое сообщество, pyautoit (Sep, 2014)
Basic-like language, нет отладчика, нет планов на .NET
AutoHotKey
.ahk скрипты (исходный код на C++), есть COM интерфейс
pywinauto
Чистый Python, красивый ООП, permissive license
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Пример скрипта на pywinauto
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
История pywinauto
(2006-2010) Mark McMahon, 32-bit Python, pywinauto 0.4.0
(2010-2011) портирована на 64-битный Python (Intel)
2014 Python 2/3 compatibility (2.6+, 3.3+)
2015 внутренний fork (Intel) вышел как 0.5.0+
2016 MS UI Automation есть в 0.6.0 (31 октября)
есть планы ещё на 2 года минимум
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
MS UI Automation
- Native COM interface (UIAutomationCore.dll)
- .NET interface
Open Source Tools:
TestStack.White (C#) - with a long history (563 stars)
Winium.Desktop (C#) - young but good (105 stars)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Проблемы MS UI Automation
- Громоздко и сложно для изучения
- В .NET интерфейсе есть ошибки, которых нет
в нативном (UiaComWrapper)
- Custom COM interface (не IDispatch)
- Не поддерживает Java AWT/Swing и GTK+
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Решение для Python
IronPython
пытались использовать .NET интерфейс
есть ошибка с ArrayList^ (нужен костыль на C#)
CPython
пакет comtypes поддерживает custom COM интерфейсы
Ограничения: недогружает регистрацию
custom controls & custom properties
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Изменения в pywinauto
Низкоуровневый слой (backend)
“win32” (Win32 API, pywinauto 0.5.4)
“uia” (MS UI Automation, pywinauto 0.6.0+)
Было: app = Application().start(“sample.exe”)
Стало: app = Application(backend=”uia”).start(“sample.exe”)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Объект Application
app = Application().start(“sample.exe”)
app = Application(backend='win32').connect(path=”sample.exe”)
app = Application(backend='uia').connect(title_re=”^.*Sample$”)
app.kill_()
# process-agnostic way
desktop = Desktop(backend=”uia”)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Спецификация окна/контрола
WindowSpecification
описание критериев поиска (title, class_name, ...)
элемент может ещё/уже не существовать
умеет искать контролы, дожидаться их исчезновения, ...
Wrapper
объект, привязанный к реальному контролу
умеет посылать команды, получать данные
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Как создать описание?
app.MainWindow.OK
app[“Main Window”][“OK”]
app.window(best_match=”Main Window”) 
.child_window(best_match=”OK”)
app.MainWindow.child_window(title=”OK”,
работает быстрее ---> class_name=”Button”)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Подъёмник за гобеленом
app.Properties.OK.click()
работает так же, как
app.Properties.OK.wrapper_object().click()
Но:
app.Properties.OK возвращает WindowSpecification
app.Properties.OK.wrapper_object() ← ButtonWrapper
Пример для explorer.exe
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Пример для explorer.exe
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Пример для explorer.exe
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Где взять имена для доступа?
app.MainWindow.print_control_identifiers()
ComboBox - 'Gray' (L789, T594, R906, B615)
'Border sizeComboBox' 'ComboBox' ()
Button - 'Set' (L1083, T592, R1157, B615)
'Button' 'Button0' 'Button1' 'Set' 'SetButton' ()
Button - 'OK' (L1048, T695, R1123, B718)
'Button2' 'OK' 'OKButton' ()
Button - 'Cancel' (L1129, T695, R1204, B718)
'Button3' 'Cancel' 'CancelButton' ()
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Способы делать магию
1. By title: app.Properties.OK.click()
2. By title+type: app.PropertiedDialog.OKButton.click()
3. By type+index: app.Properties.Button3.click()
4. By top-left label: app.SaveAs.FileNameEdit.set_text(“”)
5. By item text:
app.Properties.TabControlSharing.select(“General”)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Обработка ожиданий
window = app.Window_(title=”Main Window”)
window.wait(“active”, timeout=20)
window.wait_not(“visible enabled”)
window.exists() / .visible() / .enabled() / .active()
# wait until CPU usage < 2%
app.wait_cpu_usage_lower(threshold=2, timeout=10)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
GUI тесты это ...
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Общие проблемы GUI Automation
Нужен активный desktop
чтобы работал ввод: click_input(), type_keys(“”)
Разовый запуск по RDP (Remote Desktop)
держим RDP не свёрнутым, не в полном экране → OK
Для регулярного запуска под Continuous Integration в лабе
настраиваем autologon
ставим VNC server (можно делать безопасный disconnect)
не запускаем Jenkins slave как сервис
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Другие платформы
Linux (есть pyatspi2 и LDTP)
реализованы mouse/keyboard модули через python-xlib
AT SPI: пока только планы
OS X (есть pyatom)
простой прототип для окон верхнего уровня
Java (есть Jemmy на Java)
Python-to-Java bridge: JPype (кросс-платформенный)
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Ещё больше фич
win32_hooks (a.k.a. hot keys)
работают, но будут улучшены и оттестированы в 0.6.1
Automation Event Handlers (MS UI Automation)
обработчики на любое событие (знаем, как сделать)
Тестирование локализаций
1 скрипт для разных языков (есть тесты, нет реальных примеров)
Поиск типичных ошибок на окне
есть простые проверки, нужно расширять и ревьюить
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Процесс разработки
“Unit” тесты на Windows/Linux (модуль unittest)
Cloud Continuous Integration
AppVeyor CI
Travis CI
Code coverage ~95% (codecov.io)
Static analyzers
Landscape.io Quantified Code Codacy
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Благодарности
Valentin Kroupkin (Auckland, New Zeland)
MS UI Automation, тесты, Continuous Integration & more
Denis Matiychuk (Kharkiv, Ukraine)
GUI инспектор объектов + генератор кода: SWAPY
Alexander Rumyantsev (Lobachevsky State University, NN)
MS UI Automation, multi-backend
Ivan Magazinnik (Lobachevsky State University, NN)
модули mouse/keyboard на Linux
Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
Контакты
@gmail.com & Skype: vasily.v.ryabov
сайт: pywinauto.github.io
GitHub: pywinauto/pywinauto
Доки: pywinauto.readthedocs.io
Русскоязычный чат: room on Gitter
tag “pywinauto” on StackOverflow

Contenu connexe

Tendances

Лекция Android. Fragments, ActionBar, Drawer
Лекция Android. Fragments, ActionBar, DrawerЛекция Android. Fragments, ActionBar, Drawer
Лекция Android. Fragments, ActionBar, DrawerАлександр Брич
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Ontico
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Ontico
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Ontico
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewAnton Katkov
 
Навигация в Android без боли и слез
Навигация в Android без боли и слезНавигация в Android без боли и слез
Навигация в Android без боли и слезMobileUp
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Denis Tsvettsih
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
 
Unity Android и Java. Демо сессия
Unity Android и Java. Демо сессияUnity Android и Java. Демо сессия
Unity Android и Java. Демо сессияDevGAMM Conference
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstDenis Tsvettsih
 
"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii HolubievFwdays
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Denis Tsvettsih
 

Tendances (17)

Лекция Android. Fragments, ActionBar, Drawer
Лекция Android. Fragments, ActionBar, DrawerЛекция Android. Fragments, ActionBar, Drawer
Лекция Android. Fragments, ActionBar, Drawer
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)
 
Fragments, ActionBar, Drawer
Fragments, ActionBar, DrawerFragments, ActionBar, Drawer
Fragments, ActionBar, Drawer
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overview
 
Навигация в Android без боли и слез
Навигация в Android без боли и слезНавигация в Android без боли и слез
Навигация в Android без боли и слез
 
Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus Как написать XAML-приложение без Message Bus
Как написать XAML-приложение без Message Bus
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей Солодовников
 
Unity Android и Java. Демо сессия
Unity Android и Java. Демо сессияUnity Android и Java. Демо сессия
Unity Android и Java. Демо сессия
 
Разработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel FirstРазработка WPF приложений в стиле ViewModel First
Разработка WPF приложений в стиле ViewModel First
 
"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
 

En vedette

Использование Fiddler для эмуляции различных сетевых условий в автотестах
Использование Fiddler для эмуляции различных сетевых условий в автотестахИспользование Fiddler для эмуляции различных сетевых условий в автотестах
Использование Fiddler для эмуляции различных сетевых условий в автотестахSQALab
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB APISQALab
 
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...SQALab
 
Отряд тест-аналитиков
Отряд тест-аналитиковОтряд тест-аналитиков
Отряд тест-аналитиковSQALab
 
Как протестировать тим-лидера
Как протестировать тим-лидераКак протестировать тим-лидера
Как протестировать тим-лидераSQALab
 
Провокации автоматического тестирования
Провокации автоматического тестированияПровокации автоматического тестирования
Провокации автоматического тестированияSQALab
 
Разработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатацииРазработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатацииSQALab
 
Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!SQALab
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
Анализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияАнализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияSQALab
 
Тестирование беспроводных интерфейсов
Тестирование беспроводных интерфейсовТестирование беспроводных интерфейсов
Тестирование беспроводных интерфейсовSQALab
 
Advancing Testing Using Axioms
Advancing Testing Using AxiomsAdvancing Testing Using Axioms
Advancing Testing Using AxiomsSQALab
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирогаSQALab
 
Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?SQALab
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Pythoninfodox
 
Dejate ser / Dioscoride Paulino
Dejate ser / Dioscoride PaulinoDejate ser / Dioscoride Paulino
Dejate ser / Dioscoride PaulinoDioscoride Paulino
 
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)SQALab
 

En vedette (19)

Использование Fiddler для эмуляции различных сетевых условий в автотестах
Использование Fiddler для эмуляции различных сетевых условий в автотестахИспользование Fiddler для эмуляции различных сетевых условий в автотестах
Использование Fiddler для эмуляции различных сетевых условий в автотестах
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB API
 
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...
Эвристики, мнемоники и другие греческие слова в исследовательском тестировани...
 
Отряд тест-аналитиков
Отряд тест-аналитиковОтряд тест-аналитиков
Отряд тест-аналитиков
 
Как протестировать тим-лидера
Как протестировать тим-лидераКак протестировать тим-лидера
Как протестировать тим-лидера
 
Провокации автоматического тестирования
Провокации автоматического тестированияПровокации автоматического тестирования
Провокации автоматического тестирования
 
Разработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатацииРазработчик: руководство по эксплуатации
Разработчик: руководство по эксплуатации
 
Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!Test Cases are dead, long live Checklists!
Test Cases are dead, long live Checklists!
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
Анализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестированияАнализ инструментов автоматизации мобильного тестирования
Анализ инструментов автоматизации мобильного тестирования
 
Тестирование беспроводных интерфейсов
Тестирование беспроводных интерфейсовТестирование беспроводных интерфейсов
Тестирование беспроводных интерфейсов
 
Advancing Testing Using Axioms
Advancing Testing Using AxiomsAdvancing Testing Using Axioms
Advancing Testing Using Axioms
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
 
Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?Когда стоит закончить автоматизировать?
Когда стоит закончить автоматизировать?
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Python
 
Dejate ser / Dioscoride Paulino
Dejate ser / Dioscoride PaulinoDejate ser / Dioscoride Paulino
Dejate ser / Dioscoride Paulino
 
EFECTO IVERNADERO
EFECTO IVERNADEROEFECTO IVERNADERO
EFECTO IVERNADERO
 
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
 
Serie numerica
Serie numericaSerie numerica
Serie numerica
 

Similaire à Автоматизируем GUI тесты на питоне

GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магии
GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магииGUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магии
GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магииVasily Ryabov
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...QA Club Minsk
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...ISsoft
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALab
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23MoscowJS
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Эльвина Сакаева
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияSQALab
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Mobile automation with Appium
Mobile automation with AppiumMobile automation with Appium
Mobile automation with AppiumOksanaBisyuk
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
белогорцев глеб белогорцев
белогорцев глеб белогорцевбелогорцев глеб белогорцев
белогорцев глеб белогорцевrit2010
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOS
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOSCodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOS
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOSCodeFest
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtДенис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtSergey Platonov
 

Similaire à Автоматизируем GUI тесты на питоне (20)

GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магии
GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магииGUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магии
GUI тесты на чистом питоне: Win32, MS UI Automation и щепотка чёрной магии
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
White automation
White automationWhite automation
White automation
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Mobile automation with Appium
Mobile automation with AppiumMobile automation with Appium
Mobile automation with Appium
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
белогорцев глеб белогорцев
белогорцев глеб белогорцевбелогорцев глеб белогорцев
белогорцев глеб белогорцев
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOS
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOSCodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOS
CodeFest 2011. Бусыгин Р. — Создание кастомных интерфейсов для iOS
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на QtДенис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
Денис Кандров, Пушкова Евгения, QSpec: тестирование графических приложений на Qt
 

Plus de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

Plus de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Автоматизируем GUI тесты на питоне

  • 1. Software quality assurance days 20 Международная конференция по вопросам качества ПО sqadays.com Минск. 24–26 ноября Василий Рябов Aquantia. Нижний Новгород, Россия Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation
  • 2. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Автоматизация десктопного GUI Задачи: (1) уметь управлять GUI приложением (2) уметь получать текстовые данные из него Проблема: нет единых стандартов - разные оконные / widget системы - огромное разнообразие фреймворков и библиотек
  • 3. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Известные подходы 1. Координатный метод (autopy, PyAutoGUI) click(120, 170) type_keys(“If I was lucky, I'd be at the edit box.”) 2. Распознавание изображений (Sikuli, Lackey) find(“OK_button.png”).click() 3. Accessibility технологии btn = window(title_re=”Browse.*”, class_name=”Button”) btn.get_text()
  • 4. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Accessibility технологии MS UI Automation WinForms, WPF, Qt, браузеры, Store apps (Inspect.exe) Apple Accessibility API Cocoa, ... AT SPI (через Dbus) Qt, GTK, wxWidgets, ... Win32 API MFC, VCL, частично WinForms (Spy++)
  • 5. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Open Source Tools for Win32 API AutoIt Большое сообщество, pyautoit (Sep, 2014) Basic-like language, нет отладчика, нет планов на .NET AutoHotKey .ahk скрипты (исходный код на C++), есть COM интерфейс pywinauto Чистый Python, красивый ООП, permissive license
  • 6. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Пример скрипта на pywinauto
  • 7. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation История pywinauto (2006-2010) Mark McMahon, 32-bit Python, pywinauto 0.4.0 (2010-2011) портирована на 64-битный Python (Intel) 2014 Python 2/3 compatibility (2.6+, 3.3+) 2015 внутренний fork (Intel) вышел как 0.5.0+ 2016 MS UI Automation есть в 0.6.0 (31 октября) есть планы ещё на 2 года минимум
  • 8. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation MS UI Automation - Native COM interface (UIAutomationCore.dll) - .NET interface Open Source Tools: TestStack.White (C#) - with a long history (563 stars) Winium.Desktop (C#) - young but good (105 stars)
  • 9. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Проблемы MS UI Automation - Громоздко и сложно для изучения - В .NET интерфейсе есть ошибки, которых нет в нативном (UiaComWrapper) - Custom COM interface (не IDispatch) - Не поддерживает Java AWT/Swing и GTK+
  • 10. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Решение для Python IronPython пытались использовать .NET интерфейс есть ошибка с ArrayList^ (нужен костыль на C#) CPython пакет comtypes поддерживает custom COM интерфейсы Ограничения: недогружает регистрацию custom controls & custom properties
  • 11. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Изменения в pywinauto Низкоуровневый слой (backend) “win32” (Win32 API, pywinauto 0.5.4) “uia” (MS UI Automation, pywinauto 0.6.0+) Было: app = Application().start(“sample.exe”) Стало: app = Application(backend=”uia”).start(“sample.exe”)
  • 12. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Объект Application app = Application().start(“sample.exe”) app = Application(backend='win32').connect(path=”sample.exe”) app = Application(backend='uia').connect(title_re=”^.*Sample$”) app.kill_() # process-agnostic way desktop = Desktop(backend=”uia”)
  • 13. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Спецификация окна/контрола WindowSpecification описание критериев поиска (title, class_name, ...) элемент может ещё/уже не существовать умеет искать контролы, дожидаться их исчезновения, ... Wrapper объект, привязанный к реальному контролу умеет посылать команды, получать данные
  • 14. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Как создать описание? app.MainWindow.OK app[“Main Window”][“OK”] app.window(best_match=”Main Window”) .child_window(best_match=”OK”) app.MainWindow.child_window(title=”OK”, работает быстрее ---> class_name=”Button”)
  • 15. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Подъёмник за гобеленом app.Properties.OK.click() работает так же, как app.Properties.OK.wrapper_object().click() Но: app.Properties.OK возвращает WindowSpecification app.Properties.OK.wrapper_object() ← ButtonWrapper
  • 17. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Пример для explorer.exe
  • 18. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Пример для explorer.exe
  • 19. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Где взять имена для доступа? app.MainWindow.print_control_identifiers() ComboBox - 'Gray' (L789, T594, R906, B615) 'Border sizeComboBox' 'ComboBox' () Button - 'Set' (L1083, T592, R1157, B615) 'Button' 'Button0' 'Button1' 'Set' 'SetButton' () Button - 'OK' (L1048, T695, R1123, B718) 'Button2' 'OK' 'OKButton' () Button - 'Cancel' (L1129, T695, R1204, B718) 'Button3' 'Cancel' 'CancelButton' ()
  • 20. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Способы делать магию 1. By title: app.Properties.OK.click() 2. By title+type: app.PropertiedDialog.OKButton.click() 3. By type+index: app.Properties.Button3.click() 4. By top-left label: app.SaveAs.FileNameEdit.set_text(“”) 5. By item text: app.Properties.TabControlSharing.select(“General”)
  • 21. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Обработка ожиданий window = app.Window_(title=”Main Window”) window.wait(“active”, timeout=20) window.wait_not(“visible enabled”) window.exists() / .visible() / .enabled() / .active() # wait until CPU usage < 2% app.wait_cpu_usage_lower(threshold=2, timeout=10)
  • 22. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation GUI тесты это ...
  • 23. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Общие проблемы GUI Automation Нужен активный desktop чтобы работал ввод: click_input(), type_keys(“”) Разовый запуск по RDP (Remote Desktop) держим RDP не свёрнутым, не в полном экране → OK Для регулярного запуска под Continuous Integration в лабе настраиваем autologon ставим VNC server (можно делать безопасный disconnect) не запускаем Jenkins slave как сервис
  • 24. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Другие платформы Linux (есть pyatspi2 и LDTP) реализованы mouse/keyboard модули через python-xlib AT SPI: пока только планы OS X (есть pyatom) простой прототип для окон верхнего уровня Java (есть Jemmy на Java) Python-to-Java bridge: JPype (кросс-платформенный)
  • 25. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Ещё больше фич win32_hooks (a.k.a. hot keys) работают, но будут улучшены и оттестированы в 0.6.1 Automation Event Handlers (MS UI Automation) обработчики на любое событие (знаем, как сделать) Тестирование локализаций 1 скрипт для разных языков (есть тесты, нет реальных примеров) Поиск типичных ошибок на окне есть простые проверки, нужно расширять и ревьюить
  • 26. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Процесс разработки “Unit” тесты на Windows/Linux (модуль unittest) Cloud Continuous Integration AppVeyor CI Travis CI Code coverage ~95% (codecov.io) Static analyzers Landscape.io Quantified Code Codacy
  • 27. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Благодарности Valentin Kroupkin (Auckland, New Zeland) MS UI Automation, тесты, Continuous Integration & more Denis Matiychuk (Kharkiv, Ukraine) GUI инспектор объектов + генератор кода: SWAPY Alexander Rumyantsev (Lobachevsky State University, NN) MS UI Automation, multi-backend Ivan Magazinnik (Lobachevsky State University, NN) модули mouse/keyboard на Linux
  • 28. Автоматизируем GUI тесты на питоне: как подружились pywinauto и MS UI Automation Контакты @gmail.com & Skype: vasily.v.ryabov сайт: pywinauto.github.io GitHub: pywinauto/pywinauto Доки: pywinauto.readthedocs.io Русскоязычный чат: room on Gitter tag “pywinauto” on StackOverflow