windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

前言

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")

如果能夠順利打開記事本,說明安裝成功。

windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

在啟動應用程序前,需要選擇合適的可訪問性技術(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。

windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

Inspect.exe 是 Windows SDK 的內置工具,可通過安裝 windows SDK 獲得,下載地址為https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/。

windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

安裝后,Inspect.exe 位于 SDK 安裝路徑的 bin 文件夾中,通常不需要以管理員身份運行,并可復制到桌面使用。

windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

“檢查”窗口包含以下主要部分:

標題欄。顯示“檢查”窗口句柄 (HWND)。 菜單欄。提供對檢查功能的訪問權限。 工具欄。提供對檢查功能的訪問權限。 樹視圖。將 UI 元素的分層結構呈現(xiàn)為可用于在元素之間導航的樹視圖控件。 數據視圖。顯示所選 UI 元素的所有公開輔助功能屬性。

菜單欄中的命令也在工具欄中提供。下圖展示了檢查記事本中“編輯”菜單元素的 UI 自動化屬性。

windows 桌面GUI自動化-1. pywinauto 環(huán)境準備

其他類似的工具包括:

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è)工具:

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享