Посты с тэгом pywinauto


Автоматизируем десктопный GUI на Python + pywinauto: как подружиться c MS UI Automation

Python библиотека pywinauto — это open source проект по автоматизации десктопных GUI приложений на Windows. За последние два года в ней появились новые крупные фичи:


  • Поддержка технологии MS UI Automation. Интерфейс прежний, и теперь поддерживаются: WinForms, WPF, Qt5, Windows Store (UWP) и так далее — почти все, что есть на Windows.
  • Система бэкендов/плагинов (сейчас их двое под капотом: дефолтный "win32" и новый "uia"). Дальше плавно двигаемся в сторону кросс-платформенности.
  • Win32 хуки для мыши и клавиатуры (hot keys в духе pyHook).

Также сделаем небольшой обзор того, что есть в open source для десктопной автоматизации (без претензий на серьезное сравнение).


Эта статья — частично расшифровка доклада с конференции SQA Days 20 в Минске (видеозапись и



Отслеживаем завершение процессом загрузки CPU (для задач pywinauto)

pywinauto - это Python модуль для автоматизации процессов над графическим интерфейсом Microsoft Windows. Другими словамия, модуль позволяет эмулировать действия мыши и клавиатуры над объектами окна.

Порой случается такая ситуация что приложение выполняет какое либо трудоемкое задание, при этом не выдает никаких "внешних" признаков по которым можно было бы отследить средствами pywinauto факт завершения выполнения задачи. Использование простой задержки time.sleep() черевато проблемами, если таймаут наступит, а процесс все еще будет занят.
Все что мы знаем в такой ситуации это то что процесс потребляет ресурсы CPU, так почему бы этим не воспользоваться?

Напишем вспомогательную функцию которая бы отслеживала CPU активность процесса и уведомяла нас когда он завершит выполнение трудоемкой задачи, проще говоря, перестанет грузить проц.

Для того что бы узнать текущу



pywinauto: Берегись event'ов, ибо они подлые

Предисловие
Речь в данном посте пойдет о подводных камнях при использовании стороннего программного обеспечения посредством средства автоматизации действий pywinauto, а именно о событиях. Как всем известно GUI-библиотеки строятся в стиле событийного (event-driven) программирования. Таким образом, любое действие приложения является ответом на действие пользователя. То есть внутри существует некий цикл, который ходит по очереди событий, формируемой действиями пользователя и запускает ответы. Таким образом, получаем ответ на конкретное событие. С этим все понятно.

Суть проблемы
Проблемы возникают, когда разработчик не знает, как именно обрабатываются события в используемой посредством pywinauto программы. Ра