在上一篇文章中,我们完成了Pywinauto 的环境安装 ,也明确了它的适用场景和局限性。但很多同学会遇到一个核心问题:想让程序点击按钮、输入文本,却不知道怎么找到这个界面元素?
这和 Web 自动化(Selenium)完全一致:操作元素的前提,是先精准定位元素!
Selenium 用浏览器开发者工具定位页面节点,而 Pywinauto 做 Windows 桌面应用自动化,必须依靠专业的 UI 对象检查工具 ------ 今天就给大家详解UISpy 工具 ,教会大家真正的 "找元素" 核心技能,同时彻底解决遗留问题:怎么判断一个软件能不能用 Pywinauto 自动化?
一、GUI 自动化核心前提:先定位,再操作
不管是 Web 自动化还是桌面 GUI 自动化,底层逻辑完全相同:
- 找到目标元素(按钮、输入框、窗口、菜单等)
- 对元素执行操作(点击、输入、选择、获取文本等)
- Selenium:浏览器 F12 开发者工具 → 定位 HTML 元素
- Pywinauto:UI 对象检查工具 → 定位桌面应用控件
没有定位,一切操作都无从谈起。
二、主流 UI 对象检查工具
Windows 桌面应用自动化,常用的控件定位工具有这 3 个:
- Spy++
- Inspect.exe
- UISpy(课程统一使用,新手最友好)
这三款工具功能高度相似、界面布局接近、操作逻辑完全通用,学会 UISpy,其他工具可以无缝切换。
三、UISpy 工具核心介绍
1. 工具是什么?
UISpy 是微软官方提供的免费 UI 自动化测试工具,专门用于查看、分析 Windows 桌面应用的 UI 控件结构。
它能帮我们:
- 可视化展示应用的控件树结构
- 查看控件的所有关键属性(名称、类名、类型、AutomationId 等)
- 监听控件触发的事件
- 模拟用户操作
- 辅助编写自动化脚本
简单说:UISpy 就是桌面自动化的 "浏览器开发者工具"。
2. UISpy 界面关键信息

3. 工具核心作用
- 查看控件结构:清晰看到窗口、弹窗、按钮、输入框的层级关系
- 获取定位属性:拿到 Name、ClassName、AutomationId 等
- 判断是否支持 Pywinauto 自动化(最重要!)
- 辅助调试脚本:定位失败时,快速排查原因
4:工具下载
四、终极答案:如何判断一个应用能否用 Pywinauto?
在上一篇内容中,我们遗留了一个关键问题: 怎么分辨一个软件能不能用 Pywinauto 做自动化?
现在用 UISpy,一句话就能判断:
✅ 能使用 Pywinauto 的应用
UISpy 可以正常识别、定位到界面元素 → 支持自动化 说明:该应用使用Windows 原生 UI 框架(MFC、VB6、WinForms、WPF、Qt5),暴露了标准控件接口。
❌ 不能使用 Pywinauto 的应用
UISpy 无法识别元素、只能选中整个窗口 → 不支持自动化 典型场景:
- Web 应用(Chrome 里的网页)
- 自定义渲染引擎(Flutter、React Native、Electron 部分场景)
- 企业微信(典型案例)
- 部分游戏、独立渲染客户端
最直观判断方法
用 UISpy 拖动光标去拾取界面:
- 能精准选中按钮 / 输入框 / 文本 → 支持
- 只能选中整个窗口 / 整块区域 → 不支持
五、以企业微信为例:最经典的反例
我们用企业微信实测:
- 打开 UISpy
- 使用拾取工具指向企业微信界面
- 观察结果:
- 无法单独选中 "搜索框"
- 无法单独选中 "聊天按钮"
- 只能选中整个企业微信窗口区域
结论:企业微信无法使用 Pywinauto 做精细化控件自动化!
原因:它使用了自定义渲染引擎,不向 Windows 系统暴露标准控件信息,UISpy 识别不到,Pywinauto 自然也无法定位和操作。
六、下一节预告
学会 UISpy 之后,我们就正式进入Pywinauto 实战编码阶段:
- 启动桌面应用(记事本、计算器、浏览器)
- 使用 UISpy 获取元素属性
- 用 Pywinauto 实现:点击、输入、获取文本、关闭窗口
- 编写第一个可运行的 GUI 自动化脚本
总结(核心必记)
- GUI 自动化和 Web 自动化一致:先定位,再操作
- Pywinauto 定位控件必须使用UISpy(微软官方 UI 检查工具)
- UISpy 能识别控件 → 支持 Pywinauto;不能识别 → 不支持
- 企业微信、Web 页面、Flutter 应用 → 通常无法用 Pywinauto 自动化
- 控件属性(Name/ClassName/AutomationId)是后续脚本定位的关键
如果你在元素定位过程中遇到 "找不到控件""定位失败" 问题,90% 都是因为UISpy 使用不熟练,多练习拾取元素,很快就能掌握!
点赞 + 收藏,下一篇直接上手写代码,真正实现桌面应用自动化~