Доброго всем времени суток. Спешу познакомить вас с модулем pywinauto для python. Он распространяется под лицензией GNU Lesser GPL, так что абсолютно бесплатен, позволяет автоматизировать тестирование или просто рутинные процессы для Windows приложений со стандартными контролами.
Приведу пример кода:
import pywinautoapp = pywinauto.application.Application()
app.start_(“notepad.exe”)
app.Notepad.MenuSelect(“Help->About Notepad”)
app.AboutNotepad.OK.Click()
app.Notepad.Edit.TypeKeys (“pywinauto Works!”, with_spaces = True)
Как видно, все интуитивно просто. Но прежде чем радоваться (или огорчаться), давайте обозначим основные достоинства и недостатки модуля.
Достоинства:
- pywinauto - нативный модуль python
- простой интерфейс доступа к элементам графического интерфейса
- встроенный инструментарий для автоматизации
Из первого пункта, на самом деле, выплывает множество приятных вещей: не нужно таскать лишние dllки, стиль кодирования привычный для любого укротителя питона. А также вся мощь языка (и всех доступных модулей) в одной коробке! Можно с легкостью реализовать любое функциональное тестирование через графический интерфейс.
Со вторым пунктом, я думаю, все понятно из примера. Под встроенным инструментарием я понимаю спектр функций Wait, необходимых для ожидания нового окна или конкретного состояния элемента UI а также возможность делать скриншот любого элемента и возможность сохранить целый диалог в xml.
Недостатки:
- работа только со стандартными контролами
- последнее обновление было в начале 2011 года
pywinauto работает только со стандартными (Windows API) контролами. На самом деле, этого вполне достаточно для подавляющего большинства десктоп приложений. Хотя, в принципе, pywinauto будет видеть окно с нестандартными контролами, но кликнуть можно будет лишь по координатам. А это можно и без pywinauto сделать.
Также стоит добавить, что существует утилита, позволяющая значительно облегчить процесс автоматизации на pywinauto.
Утилита SWAPY уже описана в разделе инструменты. Вкратце скажу, что это аналог UI Spy на pywinauto, еще она умеет генерировать python код и выполнять действия непосредственно из себя. Кстати, SWAPY сразу даст вам понять, подходит ли pywinauto для автоматизации Вашего приложения или нет.
В следующей статье я планирую описать конкретный тест для простенького приложения и показать как все просто.
До встречи.