前言
Pywinauto 是基于 python 開發(fā)的一個自動化測試腳本模塊,主要用于操作 windows 標準圖形界面。它能方便地發(fā)送鼠標和鍵盤操作給 Windows 的對話框和控件。官方網站為https://pywinauto.readthedocs.io/en/latest/index.html,中文文檔則位于https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193035。
通過命令行可以輕松安裝 pywinauto:
pip install pywinauto
安裝成功后,可以運行以下代碼來驗證是否正確安裝:
from pywinauto.application import Application # 啟動記事本 app = Application(backend="uia").start("notepad.exe")
如果能夠順利打開記事本,說明安裝成功。
在啟動應用程序前,需要選擇合適的可訪問性技術(backend)。在 Windows 上有兩種支持的技術:
- Win32 API (backend=”win32″),適用于 mfc、VB6、VCL、簡單的 WinForms 控件和大多數舊的遺留應用程序。
- MS UI Automation (backend=”uia”),適用于 WinForms、wpf、商店應用程序、Qt5 和瀏覽器。
要確定程序適用的 backend,可以使用 GUI 對象檢查工具。如果使用 inspect 的 UIA 模式顯示的控件和屬性更多,則選擇 backend=”uia”,否則選擇 backend=”win32″。
常用的元素定位工具包括:
- SPY++:用于 WIN32 API,顯示所有控件時選擇 “win32″。
- Inspect.exe:在 UIA 模式下顯示更多控件時選擇 “uia”。
- py_inspect:支持 win32 和 uia,是 SWAPY 的替代品。
- UISPY:支持 uia 訪問技術。
- SWAPY:只支持 win32 訪問技術。
關于 inspect 的詳細教程可訪問https://learn.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects。
Inspect.exe 是 Windows SDK 的內置工具,可通過安裝 windows SDK 獲得,下載地址為https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/。
安裝后,Inspect.exe 位于 SDK 安裝路徑的 bin 文件夾中,通常不需要以管理員身份運行,并可復制到桌面使用。
“檢查”窗口包含以下主要部分:
標題欄。顯示“檢查”窗口句柄 (HWND)。 菜單欄。提供對檢查功能的訪問權限。 工具欄。提供對檢查功能的訪問權限。 樹視圖。將 UI 元素的分層結構呈現(xiàn)為可用于在元素之間導航的樹視圖控件。 數據視圖。顯示所選 UI 元素的所有公開輔助功能屬性。
菜單欄中的命令也在工具欄中提供。下圖展示了檢查記事本中“編輯”菜單元素的 UI 自動化屬性。
其他類似的工具包括:
Python 工具:
- PyAutoGui:一個流行的跨平臺庫,支持基于圖像的搜索,但不支持基于文本的控件操作。
- Lackey:Sikuli 的純 Python 替代品,基于圖像模式匹配。
- AXUI:MS UI Automation API 的包裝器。
- winGuiAuto:另一個使用 Win32 API 的模塊。
其他腳本語言工具:
- (perl) Win32::GuiTest
- (ruby) Win32-Autogui:Win32 API 的包裝器。
- (Ruby) RAutomation:有三個適配器:Win32 API,UIA,AutoIt。
其他免費工具:
- (C#) Winium.Desktop:基于 MS UI Automation 的年輕工具。
- (C#) TestStack.White:基于 MS UI Automation 的歷史悠久的庫。
- AutoIt:基于 Win32 API 的免費工具,有自己的類似 Basic 語言。
- AutoHotKey:基于原生 c++ 的工具,有自己的腳本語言(.ahk)。
商業(yè)工具: