「Pywinauto 」作为 WinAppDriver 的替代方案,能完美完成 PC 端的自动化吗?闲话少说,是骡子是马,牵出来遛遛,证明一下!
Pywinauto介绍
Pywinauto,完全由 Python 构建的一个模块,可以用于自动化 Windows 上的 GUI 应用程序。
同时,它支持鼠标、键盘操作,在元素控件树较复杂的界面,可以辅助我们完成自动化操作。
项目地址:
支持的应用为下面 2 大类:
- Win32 API 包含 MFC、VB6、VCL、simple WinForms controls and most of the old legacy apps
- MS UI Automation包含 WinForms、WPF、Store apps、Qt5, browsers
其中
win32 API 的 backend 为「 win32 」
MS UI Automation 的 backend 为「 uia 」
元素控件
和 WinAppDriver 类似,在编写自动化脚本之前,我们需要先获取元素控件的各类属性值
获取元素控件有 2 种方式:
- 窗口内置方法
- 检查工具
窗口对象内置的 2 个方法都可以打印出当前页面的元素控件树
# 窗口对象中内置方法,打印窗体内所有元素控件
# 方式一:
窗体对象
.print_control_identifiers()
# 方式二
窗体对象.dump_tree()
常用的检查工具也包含 2 种,分别是:Inspect.exe、Spy++
实战一下
我们使用PC端微信来实现自动发消息功能,进行实际操作之前,先安装好环境
pip3 install pywinauto
- 打开微信客户端
首先,通过检查工具判断应用的 backend 属性值,PC 端微信的 backend 为「 uia 」
然后,实例化一个「 Application 」类
最后,使用该对象内置的函数创建一个应用对象
import pywinauto
from pywinauto.application import Application
# 获取应用对象
# 三种方式任选一种
# 方式一:应用进程pid(连接)
app = Application(backend='uia'