文档备案控制台
免费开始使用

影刀RPA进阶教程:Windows桌面自动化完整指南——窗口管理、图像识别、键盘模拟与微信实战

做了两年RPA,大部分时间都在跟网页打交道。直到有一天老板说:“能不能把ERP系统里的订单自动导出来?”——那个ERP是个古老的Windows桌面软件,没有网页版,没有API,只有界面

网页自动化有XPath、有元素库,桌面自动化完全不是一回事。窗口可能被遮挡、分辨率不同元素就找不到、深度捕获也捕获不到。这篇文章把Windows桌面自动化的窗口管理、元素定位、图像识别、键盘模拟、微信实战全部讲清楚。

picture.image

一、桌面自动化的三种定位方式

picture.image 桌面应用没有DOM树,定位元素的方式跟网页完全不同。影刀提供了三种方式,按优先级排列:

定位方式适用场景稳定性配置难度
桌面元素捕获标准Windows控件(按钮、输入框、列表)⭐⭐⭐⭐

picture.image | 图像识别 | 元素捕获不到、自定义控件、图片按钮 | ⭐⭐ | 中 | | 键盘模拟 | 输入框不响应、快捷键操作、组合键 | ⭐⭐⭐ | 低 |

核心原则:能捕获元素就用元素捕获,捕获不到再用图像识别,最后才考虑键盘模拟

picture.image

二、窗口管理:获取、激活、关闭

操作桌面应用的第一步是找到窗口。影刀的“获取窗口对象”指令在“桌面自动化”分类下。

picture.image

获取窗口对象的三种方式

方式一:通过窗口标题获取(最常用)

在“获取窗口对象”指令的详情面板中,窗口定位方式下拉选“标题”,填入窗口标题的关键词。

picture.image

# 示例:获取微信窗口
# 窗口标题包含"微信"
# 返回:窗口对象 → 存到变量 win_wechat

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/de50f092959149cfb3ece13491b89f33~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783076005&x-signature=G5a3FGO35WG564rZ%2Bkiaj7y92UE%3D)

注意:标题要用部分匹配,不要写全称。因为窗口标题可能带版本号或状态信息(如“微信 (2) - 正在输入”)。

方式二:通过窗口类名获取(更精确)

picture.image

如果多个窗口标题相似(比如开了多个Excel),用类名区分更准确。

方式三:通过当前激活窗口获取

适用于“用户已经打开了目标窗口,RPA直接操作当前窗口”的场景。

激活窗口:把窗口拉到前台

获取到窗口对象后,用“激活窗口”指令把它切换到前台。每次操作前先激活窗口,确保指令发到正确的目标

获取窗口对象(标题="微信") → win
激活窗口(win)
等待(500)  # 给窗口切换留时间

这里容易踩坑:窗口最小化或隐藏在后台时,激活可能不生效。建议在激活前先用“显示窗口”指令把窗口恢复到正常状态。

关闭窗口

用“关闭窗口”指令关闭指定的窗口对象。注意不是关闭应用,只是关闭当前窗口。

三、桌面元素捕获:能捕获就别用图像

影刀V5.30及以上版本支持智能元素(Win端) ,可以捕获桌面元素。目前已支持ACC、UIA类型的桌面元素。

操作步骤

  1. 在指令面板搜索“捕获元素(桌面)”或“获取桌面元素
  2. 点击“捕获元素”按钮,鼠标移到桌面应用的目标控件上
  3. 出现橙色高亮边框后点击确认
  4. 在详情面板中可以编辑定位条件

影刀版本差异:社区版也支持桌面元素捕获,但部分高级控件类型(Java、SAP)需要更高版本。

桌面元素捕获的坑

坑1:开发时能捕获,运行时变

有用户反馈:开发时元素标签是<div><li>,运行RPA应用时变成了<Grouping>

解决方法:每次打开Windows软件后,先手动打开影刀捕获一下元素,等元素标签恢复正常后,再启动自动化程序。

picture.image

坑2:换台机器元素就失效

桌面元素的定位受分辨率、缩放比例影响很大。

解决方法

  • 在部署文档里标注:分辨率至少1920x1080、缩放100%
  • 统一用一台专门跑RPA的虚拟机
  • 关闭360等可能拦截的安全软件

坑3:深度捕获也捕获不到

有些自定义控件(如自绘按钮、图形界面),深度捕获也抓不到。

解决方法:切换到图像识别方案。

picture.image

四、图像识别:元素捕获不到时的救命稻草

图像识别是桌面自动化的“备胎方案”——不依赖元素结构,只看图片匹配

两种图像识别方式

方式一:点击图像(模板匹配)

通过预设的图片模板,在屏幕上找到匹配的位置并点击。

操作步骤:
1. 截图:把要点击的按钮截成一张小图片(PNG格式)
2. 拖入“点击图像”指令
3. 在详情面板中上传截图
4. 设置相似度(默认0.8,太严格可能找不到,太宽松可能点错)
5. 设置点击偏移(如果需要点击图片的某个特定位置)

适用场景:文字样式固定(字体、大小、颜色不变)的按钮、图标、特殊符号。

方式二:鼠标悬停在文本上(OCR)

通过识别屏幕上的文字内容定位位置,再把鼠标移过去。

操作步骤:
1. 拖入“鼠标悬停在文本上(OCR)”指令
2. 在详情面板中输入要识别的文字
3. 影刀通过AI引擎识别文字位置并移动鼠标

适用场景:元素不可捕获但文字可见的场景(如带文字标签的按钮、列表项)。

图像识别的三大坑

坑1:不同分辨率下识别失败

影刀图像识别目前没有区域设置,不同分辨率下同一图像的识别精准度不同。

解决方法

  • 固定屏幕分辨率和缩放比例
  • 截图时尽量截特征明显的区域(不要截纯色背景)
  • 降低相似度阈值(从0.9降到0.7)

坑2:图像识别不稳定,时好时坏

“窗口应用点击和图片识别点击太不稳定了,又得重新修改自动化流程”。

解决方法

  • 每次运行前先激活目标窗口,确保窗口在最前面
  • 截图时保留窗口标题栏作为参照物,提高匹配准确率
  • 配合“等待图像出现”指令,等图像加载完再操作

坑3:图像识别没有区域设置

目前影刀图像识别不支持限定搜索区域,全屏搜索效率低且容易误匹配。

解决方法:用Python脚本辅助实现区域截图+图像识别。

五、键盘模拟:输入框不响应时的终极方案

做桌面自动化最让人头疼的场景之一:输入框就是不吃你塞进去的文字

键盘输入指令

指令面板搜索“键盘输入”(也叫“模拟键盘输入”)。

基础用法

键盘输入(内容="Hello World")

输入快捷键: 点击指令详情面板的“插入键盘符号”按钮,展开软键盘,选择要模拟的按键或组合键。

# 模拟Ctrl+C(复制)
键盘输入(组合键="Ctrl+C")

# 模拟Alt+F4(关闭窗口)
键盘输入(组合键="Alt+F4")

输入框不响应的三种解法

解法一:先点击再输入

很多输入框需要先获得焦点才能接受输入。

点击元素(输入框)  # 先让输入框获得焦点
等待(200)
键盘输入(内容="要输入的文字")

解法二:用剪切板中转

某些加密输入框(如密码框、支付密码框)拦截键盘输入事件。

复制文本到剪贴板("要输入的文字")
点击元素(输入框)
模拟按键(Ctrl+V)  # 粘贴

解法三:模拟逐字符输入

部分老旧系统对粘贴事件不响应,但逐字符输入可以。

循环遍历(文字列表, 当前字符):
    键盘输入(当前字符)
    等待(50)  # 每个字符之间留一点间隔

六、实战:微信桌面端自动化(完整案例)

微信是桌面自动化最常见的场景之一。下面是一个完整的微信自动化流程模板。

场景:根据Excel名单批量发送消息

A_Main(主流程)
├─ 【读取联系人列表】
│   └─ 从Excel读取A列联系人昵称 → 联系人列表
│
├─ 【打开微信】
│   ├─ 获取窗口对象(标题="微信") → win
│   ├─ 激活窗口(win)
│   └─ 等待(1000)
│
├─ 【循环发送消息】
│   ├─ 循环列表(联系人列表, 当前联系人):
│   │   ├─ 【搜索联系人】
│   │   │   ├─ 点击搜索框(桌面元素捕获)
│   │   │   ├─ 键盘输入(Ctrl+A)  # 清空之前的搜索内容
│   │   │   ├─ 键盘输入(当前联系人)
│   │   │   └─ 等待(1000)
│   │   │
│   │   ├─ 【点击联系人】
│   │   │   ├─ 尝试:点击元素(联系人条目)
│   │   │   └─ 如果失败:点击图像(联系人头像截图)  # 备选方案
│   │   │
│   │   ├─ 【输入消息】
│   │   │   ├─ 点击输入框(桌面元素捕获)
│   │   │   ├─ 键盘输入(消息内容)
│   │   │   └─ 键盘输入(Enter)  # 发送
│   │   │
│   │   └─ 等待(随机1-3秒)  # 防风控
│   └─ 循环结束
│
└─ 【关闭】
    └─ 输出日志("消息发送完成")

微信自动化的关键元素捕获

# 桌面元素捕获参考(实际需根据微信版本调整)
# 搜索框:通常是一个输入框控件
# 联系人列表:列表控件,每个联系人是一个列表项
# 消息输入框:多行文本输入控件
# 发送按钮:按钮控件

注意:微信版本更新频繁,元素结构可能变化。建议每季度重新校验一次关键元素。

微信自动化的风控规避

微信对自动化操作的检测非常严格。以下策略必须执行:

  1. 控制频率:每条消息之间加随机延迟(1-3秒) ,不要固定间隔
  2. 控制总量:单次运行不超过200条消息,避免触发风控
  3. 模拟真实操作:不要用纯键盘操作,适当加入鼠标移动和点击
  4. 分散时段:批量任务分多次执行,不要集中在同一时间段

七、进阶:AI视觉操作屏幕(V5.30+新特性)

影刀V5.30版本推出了“对话操作屏幕”指令——基于AI视觉大模型(VLM),用自然语言让AI识别/操作屏幕。

相比传统图像识别的优势

  • 图像语义理解:AI能理解“登录按钮”“关闭窗口”等语义
  • 智能规划:自动规划操作步骤
  • 处理验证码:AI识别验证码内容并操作通过验证

使用方式:在指令面板搜索“对话操作屏幕”,用自然语言描述要执行的操作即可。

社区版用户注意:该功能基于云端AI服务,调用可能消耗AI额度,具体以影刀官方说明为准。

八、桌面自动化的通用避坑指南

坑1:自己电脑跑得好好的,换台机器就不行了

原因:分辨率不同、缩放比例不同、杀毒软件拦截。

解决方案

  • 统一分辨率(1920×1080)和缩放(100%)
  • 统一浏览器版本
  • 关闭360等安全软件
  • 用专门跑RPA的虚拟机

坑2:图像识别在不同分辨率下失效

解决方案

  • 固定屏幕分辨率
  • 截图时保留窗口标题栏作为参照
  • 降低相似度阈值

坑3:元素捕获时能定位,运行时找不到

解决方案

  • 每次操作前先“激活窗口”
  • 用Try-Catch包裹,捕获不到时切换到图像识别备选方案
  • 在流程开始前手动捕获一次元素“激活”识别能力

坑4:键盘输入内容乱码或缺失

解决方案

  • 检查输入法是否切换到英文状态
  • 用剪切板中转代替直接键盘输入
  • 逐字符输入代替整段粘贴

九、完整实战:ERP订单导出自动化(综合应用)

这是一个结合窗口管理、元素捕获、图像识别、键盘模拟的完整案例。

A_Main(主流程)
├─ 【打开ERP】
│   ├─ 打开桌面应用(ERP.exe路径)
│   ├─ 获取窗口对象(标题="ERP系统") → win
│   └─ 激活窗口(win)
│
├─ 【登录】
│   ├─ 尝试:点击元素(用户名输入框) → 键盘输入(账号)
│   ├─ 如果失败:点击图像(用户名输入框截图) → 键盘输入(账号)  # 备选
│   ├─ 尝试:点击元素(密码输入框) → 键盘输入(密码)
│   ├─ 如果失败:点击图像(密码输入框截图) → 键盘输入(密码)
│   └─ 点击元素(登录按钮)
│
├─ 【导航到订单导出页面】
│   ├─ 点击元素(订单管理菜单)
│   ├─ 等待(1000)
│   ├─ 点击元素(订单导出子菜单)
│   └─ 等待页面加载(3000)
│
├─ 【设置导出条件】
│   ├─ 点击元素(日期选择器)
│   ├─ 键盘输入(开始日期)
│   ├─ 点击元素(导出按钮)
│   └─ 等待导出完成(5000)
│
└─ 【关闭】
    ├─ 关闭窗口(win)
    └─ 输出日志("导出完成")

常见问题/易错速查

  1. 桌面元素捕获和网页元素捕获有什么区别 → 网页有DOM树和XPath,桌面应用没有。桌面元素捕获依赖Windows的UI自动化框架(UIA/ACC),不同应用支持程度不同。

  2. 图像识别太不稳定怎么办 → 优先尝试桌面元素捕获。实在不行再用图像识别,并配合固定分辨率、降低相似度阈值、保留窗口标题栏作为参照物。

  3. 键盘输入不响应 → 先点击输入框获得焦点;用剪切板中转(Ctrl+V);或用逐字符输入代替整段粘贴。

  4. 换台机器元素就失效 → 固定分辨率和缩放比例,统一用一台专门跑RPA的虚拟机。

  5. 微信自动化会被封吗 → 微信对自动化操作检测严格。控制频率(每条消息间隔1-3秒)、控制总量(单次不超过200条)、分散时段执行。

  6. 社区版能做桌面自动化吗 → 可以。桌面元素捕获、图像识别、键盘模拟这些指令社区版都支持。但“对话操作屏幕”等AI功能可能消耗额度。

推荐资源

  1. 影官方帮助中心搜索“桌面自动化”和“窗口对象
  2. 影刀开发者社区搜“桌面元素”有大量踩坑记录
  3. 影刀官方社区“做了半年RPA机器人,我把影刀流程自动化的坑都踩了一遍
  4. B站“小可耐教你学影刀RPA”有桌面自动化的实操视频

#影刀RPA #RPA自动化 #桌面自动化 #窗口管理 #图像识别 #微信自动化

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论