前言
Pywinauto 是基于 Python 开发的,用于自动化测试的脚本模块,主要操作于 Windows 标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给 Windows 的对话框和控件。
官网地址https://pywinauto.readthedocs.io/en/latest/index.html
环境准备
可以通过命令行安装pywinauto:
pip install pywinauto
安装完成后,可以执行以下代码,检测是否正确安装
from pywinauto.application import Application
# 启动记事本
app = Application(backend="uia").start("notepad.exe")
执行后能正确打开记事本即可
可访问性技术(backend)
在启动应用程序之前,我们需确定使用哪种可访问性技术(backend)用于应用程序。
在windows上受支持的有两种:
- Win32 API (backend= "win32") ,默认的backend, MFC、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序
- MS UI Automation (backend="uia") , WinForms、WPF、商店应用程序、Qt5、浏览器
那么如何知道程序到底适用于那种backend?
可以借助于GUI对象检查工具来确定程序到底适用于那种backend。如果使用 inspect 的uia模式,可见的控件和属性更多的话,backend可选uia,反之,backend可选win32。
inspect 元素定位工具
常用的一些元素定位工具:
SPY++,用于WIN32 API。当SPY++可以显示所有的控件时,访问技术应该选择"win32"。
Inspect.exe:如果Inspect.exe的模式设置为UIA模式,可以比SPY++显示更多的控件,则访问技术应该选择"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<version><platform> 文件夹中。 通常不需要以管理员身份运行它。
它可以单独复制出来,放在桌面使用。
“ 检查” 窗口包含几个主要部分:
标题栏。 显示“ 检查 ”窗口句柄 (HWND) 。
菜单栏。 提供对检查功能的访问权限。
工具 栏。 提供对检查功能的访问权限。
树视图。 将 UI 元素的分层结构呈现为可用于在元素之间导航的树视图控件。
数据视图。 显示所选 UI 元素的所有公开辅助功能属性。
菜单栏中可用的命令也在工具栏中提供。 下图显示了检查查询记事本中“编辑”菜单元素的UI 自动化属性。