资讯动态

影刀RPA实操指南:Windows桌面软件自动化——窗口操作与图像识别

发布时间:2026/9/29 20:05:54 来源:尧图企业网站定制
影刀RPA实操指南Windows桌面软件自动化——窗口操作与图像识别做Windows桌面软件自动化的人几乎都卡在同一个地方网页自动化有元素、有XPath抓起来顺手可一换到ERP、财务软件、钉钉这类桌面客户端元素要么抓不到要么抓到了点了没反应。这篇影刀RPA实操指南就把窗口操作和图像识别这两块桌面自动化的基本功讲透。我自己是非技术出身用影刀RPA两年多桌面上做过进销存软件录单、钉钉批量发消息、财务软件导报表。最开始我也以为桌面软件和网页是一回事结果第一周就在窗口没激活就点按钮这个坑上耗了整整两天。桌面自动化和网页自动化最大的区别在于窗口是有状态的。窗口不激活、被遮挡、最小化指令就会找不到目标或者点空。所以桌面自动化的第一步永远不是抓元素而是把窗口安排明白。先把影刀装好认识影刀与安装检查还没装影刀RPA的先去影刀官网下载安装包双击安装后注册社区版账号登录。社区版每天有30分钟执行时长练手够用跑量产任务再考虑升级。装完后别急着写流程先做三件事打开影刀编辑器左侧确认指令面板能正常显示各分类指令顶部菜单找到工具检查浏览器插件是否安装Chrome/Edge按需装桌面自动化不强制目标桌面软件提前打开并登录好确认窗口标题栏的文字内容后面抓窗口要用窗口对象的获取激活窗口与窗口绑定影刀RPA里桌面软件的窗口是一个窗口对象后面所有点击、输入都建立在拿到这个对象的基础上。在指令面板搜索获取窗口对象win32.get把窗口标题填进去。标题可以填完整的也可以勾选通配符做模糊匹配比如标题是金蝶K3 - 主界面可以只填金蝶*再勾上use_wildcard通配符选项。如果窗口标题会变比如软件打开不同单据后标题跟着变更稳的方式是通过窗口句柄获取用获取窗口对象系列里的句柄方式配合 get_by_handle 拿到固定句柄。不过句柄每次启动软件可能变化更通用的做法是按类名匹配。fromxbotimportwin32defmain(args):# 按标题模糊匹配获取标题以钉钉开头的窗口wndwin32.get(钉钉*,use_wildcardTrue)# 激活窗口把窗口带到前台这是桌面自动化第一步wnd.activate()# 最大化窗口避免窗口太小导致元素或图像被遮挡wnd.set_state(maximize)# 获取窗口标题常用于校验是否打开了正确的窗口titlewnd.get_detail(title)print(title)坑提醒窗口必须先激活再操作。很多软件尤其是老式C/S架构的不激活就点按钮点击会落在别的窗口上。流程开头固定加一步激活最大化能避开80%的桌面点击问题。窗口对象常用的状态设置就这几种记下来够用set_state参数效果常用场景maximize最大化操作前统一窗口状态restore还原处理被最大化的窗口minimize最小化腾出屏幕操作别的窗口hide / show隐藏/显示特殊场景少量使用另外窗口的 move(x0, y0) 和 resize(width, height) 可以把窗口挪到固定位置、固定大小。如果你后面要用图像识别强烈建议先固定窗口位置和大小因为图像匹配对长什么样很敏感。元素定位四合一桌面元素、图像、CSS与XPath的关系网页自动化里元素定位靠元素捕获XPathCSS选择器正则四件套桌面自动化其实也继承了这套思路只是优先级不同。桌面软件优先用元素捕获点击指令详情面板的捕获元素按钮鼠标移到软件上目标控件会高亮点击确认后生成win32元素。像记事本的菜单栏捕获出来的选择器类似菜单项目_文件F这种配合 window.find() 就能直接点击这是最稳的方式。但大量桌面软件Delphi、自绘控件开发的根本捕获不到标准元素这时候才轮到图像识别出场。给新手一个明确的优先级排序能抓到元素用元素点击速度最快、最稳定抓不到元素但界面样式固定用图像识别又抓不到元素界面又乱用键盘快捷键绕过去XPath和CSS选择器在桌面自动化里用得少但如果你做的是混合项目桌面软件里内嵌WebView页面那套网页定位技能就派上用场了//div[class‘btn’]这种CSS写法和 //*[id‘submit’]这种XPath写法照常能用。建议新手把网页定位的6种XPath写法学扎实桌面和网页两边通吃。变量与数据类型桌面流程里的三个高频类型桌面流程里最常打交道的变量就三种字符串、列表、窗口对象。窗口对象就是上面 win32.get 返回的东西建议存成变量复用不要每个指令都重新获取。列表主要来自获取文件夹下的文件列表这类指令循环处理时用ForEach列表循环遍历。字符串处理有个高频坑从软件界面获取的文本往往带空格或换行判断前记得先做strip清理或者用文本.替换指令把空格删掉再比较。字典和JSON在桌面流程里出现得少主要是和HTTP接口、飞书多维表格交互时才会用到刚入门可以先放一放。流程控制If判断加循环桌面流程的骨架桌面流程的控制逻辑和网页流程完全一样For次数循环、ForEach列表循环、While条件循环、If条件判断、Try-Catch异常处理。桌面场景最常见的组合是循环处理多张单据用For次数循环控制单据数量循环体内依次做激活窗口、点击新建按钮、填内容、点保存。每张单据之间记得加等待桌面软件保存动作经常比界面响应慢半拍。Try-Catch在桌面流程里比网页更重要因为桌面软件动不动弹个对话框把流程卡住。把循环体包进Try块Catch里加输出日志和截图Finally里做关闭弹窗的兜底操作这套结构我建议所有桌面流程标配。等待与图像识别wait_appear的用法图像识别是桌面自动化的兜底武器。影刀RPA里图像相关的核心方法是这一组wait_appear等待图像出现、wait_disappear等待图像消失、click点击图像、hover悬停、dblclick双击都挂在 win32.image 下面。fromxbotimportwin32defmain(args):# 等待导出按钮图像出现超时20秒出现返回True否则Falseappearwin32.image.wait_appear(导出按钮,timeout20)ifappear:# 点击图像中心按住Ctrl键点击win32.image.click(导出按钮,anchor(middleCenter,0,0),buttonleft,keysctrl)else:# 20秒没等到输出日志方便排查print(导出按钮没有出现检查软件是否卡死)用指令方式更简单指令面板搜点击图像详情面板里的参数一项项看清楚——搜索范围整个屏幕 / 指定窗口对象 / 当前激活窗口三选一目标图像从图像库选择支持多个图像样式会变的按钮多捕几张目标图像的部位中心点 / 随机位置 / 自定义鼠标左键或右键点击次数单击或双击键盘可加Alt/Ctrl/Shift/Win辅助键超时时间(s)等图像出现的时长默认别低于20秒锚点那个九宫格位置topLeft到bottomRight九个方位加offset_x、offset_y偏移量非常好用。比如目标图像是一个大卡片你想点卡片右下角的小图标锚点选bottomRight再给点偏移比整个卡片都截进图像里准确得多。抓图像的操作路径点击指令详情面板的添加图像元素屏幕进入截图模式框选目标区域框小不框大只截按钮本身别把周围背景截进去命名后存入图像库。网页自动化与桌面混编的实际处理不少业务是桌面软件浏览器混合的比如从ERP导出数据再录到网页后台。影刀RPA里win32模块管桌面、web模块管网页同一个流程里可以混用。混编流程唯一要多注意的就是窗口切换网页操作完切回桌面软件记得重新激活桌面窗口桌面软件点了打开浏览器按钮也要用获取已打开的网页对象指令接管浏览器。翻页、弹窗、iframe这些网页自动化的处理逻辑我在之前文章里写过这里不展开。数据处理桌面导出的Excel怎么接桌面软件导出的Excel通常要清洗后再用。影刀RPA的数据处理链路是固定的启动Excel或打开Excel → 读取区域/读取整表 → 处理 → 写回或另存。读数据用读取Excel区域指令把数据读成列表变量清洗文本类用替换文本“删除空格”数字类可以用Python模式加Pandas做去重和格式转换写回用写入区域到Excel批量写比逐行写快得多数据库操作也是同一套思路连接数据库SQLite/MySQL→ 查询或批量插入 → 关闭连接。桌面软件的数据进数据库做汇总是很多公司报表自动化的标准打法。鼠标与键盘桌面自动化的隐形主力桌面流程里别小看键盘指令很多点不动的地方键盘一点就通。键盘输入指令模拟按键比如CtrlS保存、Enter确认、Tab切焦点输入文本指令往输入框填内容注意区分模拟人工输入和自动化接口输入两种方式文件路径输入框自动化接口输入偶尔失效换成模拟人工输入或剪切板输入实测好用还有个经验桌面软件的菜单栏与其抓元素或抓图像不如用Alt快捷键。老式软件菜单基本都支持Alt字母的组合键一行键盘输入指令搞定永远不怕界面变化。进阶技能与系统联动的组合桌面流程跑到一定程度你大概率会需要这几样HTTP请求对接接口拿数据、Python写复杂的数据转换、OCR识别软件里的非文本图片、ADB控制手机端App。影刀RPA这些都内置了HTTP指令填URL和参数就能用Python图标点亮后直接写代码。系统联动方面流程跑完用飞书机器人消息或企业微信Webhook发个通知配上定时任务人就可以完全不管了。定时任务配置在影刀客户端的计划任务里设置触发时间和执行的应用即可夜间跑任务记得把电脑设置成不休眠锁屏不影响桌面自动化但休眠会中断执行。工程化规范让桌面流程活过三个月桌面流程最容易今天能用明天就崩因为软件界面、弹窗、窗口标题都在变。几个我踩坑后总结的规范子流程拆分窗口初始化激活最大化定位单独封装成子流程每个主流程开头调用命名规范指令块按01_初始化、02_取数、03_录入、04_收尾编号出问题一眼定位到模块版本选择社区版每天30分钟执行时长任务重的上创业版流程要在无头环境跑的考虑企业版每个关键动作后加日志输出出了问题看日志不用重跑完整流程源码我放在代码仓库 home.linyan.cloud里面有一个桌面软件自动化从初始化到收尾的完整模板可以直接参考改造。易错速查表现象原因处理点击图像报未找到任意一幅目标图像窗口没激活或搜索范围不对前面加激活窗口或搜索范围改整个屏幕元素点击没反应窗口被遮挡/最小化激活最大化后再操作图像有时能点有时不能目标有悬停变色等多种样式图像库多捕几张或降低相似度| 输入路径失败 | 自动化接口输入失效 | 改模拟人工输入或剪切板输入 || 流程半夜卡死 | 软件弹出升级提示框 | 流程开头加关闭弹窗的兜底逻辑 |窗口操作加图像识别这套组合拳练熟市面上八成的桌面软件都能拿下。剩下两成顽固分子靠快捷键和OCR兜底一样能自动化。先把激活窗口这个习惯养成你的桌面流程稳定性会立刻上一个台阶。#影刀RPA #RPA自动化 #Windows桌面自动化 #图像识别 #窗口操作作者林焱

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑