Python-UIAutomation-for-Windows:一个靠谱的 Windows GUI 自动化工具

做 Windows 桌面自动化的人,大多遇到过这种尴尬:想用代码控制某个软件界面,折腾半天连控件都定位不了。不少自动化框架看着功能强,真上手才发现各种坑。

yinkaisheng 开发的 Python-UIAutomation-for-Windows 解决了这个问题。项目在 GitHub 上已有 3500+ Star。

正文顶部截图

它能做什么

这工具基于微软 UIAutomation 规范,可以操作 Windows 上的各种桌面应用。支持范围挺广:MFC、Windows Form、WPF、Modern UI、Qt(部分)、Firefox、Chrome,以及 Electron 构建的应用。

安装直接:pip install uiautomation。装完自带 automation.py 脚本,用来遍历 UI 控件树并打印控件信息。对调试和定位控件很有用。

README区域截图

用法直观

定位控件的方式很直接。比如要找一个指定输入框并输入文字:

edit = uiautomation.EditControl(searchDepth=3, Name='myedit2')
edit.SendKeys('hi')

更高效的做法是先定位窗口,再从窗口往下找控件,减少遍历范围。项目支持链式调用,三五行代码就能完成一个完整的操作流程。

项目 demo 演示了记事本自动化:打开记事本、输入文字、截图、生成 GIF。整个过程代码量不大,逻辑清楚。对于 RPA 场景来说,这种围绕单个窗口逐层查找的模式很实用。

需要注意的点

作者提了几个要点。要以管理员身份运行 Python,否则可能枚举不到控件。uiautomation 2.0+ 只支持 Python 3,不兼容旧版本。Chrome 和 Electron 应用需要加 --force-renderer-accessibility 参数。

工具依赖 comtypes 和 typing 库。如果遇到 COMError 异常,通常是因为权限不够或控件本身没实现对应接口,代码里加个 try 块就行。

这个项目是作者业余时间开发的,个人维护,Apache 2.0 协议。

适用场景

Windows 桌面应用的自动化测试、RPA 流程、批量操作软件界面,都是它的用武之地。微软官方有个 Inspect.exe 工具,也能查看 UI 元素,但 automation.py 直接在终端输出信息,在脚本集成时更顺手。

如果你经常处理 Windows 应用的自动化操作,可以试试这个项目。在 GitHub 搜索 yinkaisheng/Python-UIAutomation-for-Windows 能找到。

sheng/Python-UIAutomation-for-Windows 能找到。

更多推荐