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

影刀RPA进阶教程:调试技巧与报错排查——流程不报错但结果不对怎么办

流程能跑完不报错,但采集到的数据总是少几条、或者每次都是重复的第一页数据——这种“没报错但结果不对”的问题,比直接报错难排查十倍

我刚开始做自动化的时候,最怕的就是这种。报错至少告诉你哪里出了问题,“没报错但数据不对”你根本不知道流程到底是怎么走的、哪个判断分支被触发了、哪个变量值变了。后来我才发现,调试不是技术活,就是让流程一步一步走,你盯着看每一步的变化

picture.image

这篇文章不讲理论,直接说你打开影刀之后怎么操作。

断点调试:让流程停下来给你看

picture.image

影刀的调试入口在顶部工具栏——那个虫子图标的“调试”按钮,点击后选择“调试当前流程”或“从此处开始调试”。

怎么打断点

picture.image 打断点的方法很简单:在流程行号左侧的空白处点击一下,会出现一个橙色的圆点。流程运行到这个橙点所在的行时会自动暂停。

注意一个细节:打断点的那条指令本身还没有被执行——程序是停在它前面,准备执行它。你按“单步调试”之后,这条指令才会真正运行。

断点打在哪儿

picture.image

不是随便打,打在三个关键位置最有效

位置1:循环开始前 查看循环变量(页码、列表等)的初始值对不对。比如翻页采集,页码是不是从1开始的?总页数有没有正确获取到?

picture.image

位置2:判断分支内部 怀疑某个条件分支一直没进去、或者一直进了不该进的分支时,在“如果”指令后面打断点。运行到断点时,鼠标悬停在变量名上,看它的值跟你预期是否一致。

位置3:关键变量赋值之后

picture.image 比如刚提取完价格,想知道价格变量里是“¥99.00元”还是“99”、有没有多余空格。在赋值指令的下一行打断点,停下来看变量值。

单步执行的快捷键

流程停在断点后,用这几个快捷键控制:

picture.image

快捷键作用
F10单步跳过——执行当前指令,然后停在下一条(不进入子流程内部)
F11单步进入——进入子流程内部逐行执行

picture.image | F5 | 继续运行——直到下一个断点或流程结束 | | Shift+F5 | 停止调试 |

调试时右侧的“变量面板”会实时显示所有变量的当前值和类型。这是排查“数据不对”问题的核心工具——你看着变量一步步变化,就知道哪一步开始出错了。

日志系统:比你想的重要得多

断点调试适合“流程跑不通”的场景,但定时任务半夜执行的时候,你不可能坐在电脑前按F10。这时候日志就是唯一的排查依据。

三层日志结构

我现在每个流程都按三层来写日志:

层级记录什么示例
操作层当前在做什么“开始采集第3页商品列表”
数据层读到了什么数据“本页共采集到15条商品数据”
结果层操作成功还是失败“数据写入完成,共写入127条”

具体操作:在右侧指令面板搜索“输出日志”,拖到流程的关键节点。日志内容里可以插入变量,比如“当前页码:{$页码},采集到{$数量}条数据”。运行后在底部“运行日志”区域查看。

报错时一定要输出报错信息

在Try-Catch的Catch块里,一定要把报错信息输出到日志。配置方法:

Catch块配置:
输出日志:内容 = “采集失败,错误信息:{$error}”
截图:保存当前页面

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

{$error}是影刀内置的变量,会自动填充当前报错的具体信息。有了这个,你才知道到底是“元素未找到”还是“网络超时”还是别的什么原因。

调度模式下日志丢失怎么办

如果你用影刀的调度模式跑定时任务,发现运行日志消失了,排查方向有这几个:

  1. 机器账号是否异地登录导致调度退出
  2. 账号与任务绑定是否匹配
  3. 客户端是否正常连接——需登录客户端并切换至调度模式

变量监视:调试时的“显微镜”

调试时右侧的变量面板是排查问题最直接的窗口。任何时候流程停在了断点,第一件事就是看变量面板

常见排查场景:

  • 变量是None:说明某个指令没有正确返回数据。比如“打开Excel”没保存返回的对象,后面的读写指令就会报错
  • 变量类型不对:期望是数字,结果是文本;期望是列表,结果是单个值。鼠标悬停在变量上会显示类型
  • 变量值是脏数据:价格里带了“¥”符号、文本里有换行符——在变量面板里能看得一清二楚

一个容易被忽略的点:子流程报错时,子流程里每条指令的变量值在主流程的变量面板里看不到。解决方法是在子流程的Catch块里把关键变量用“输出日志”打印出来。

六类常见报错与排查方法

1. “元素未找到”

这是出现频率最高的报错。排查步骤:

① 先在Chrome里用XPath Helper插件验证XPath是否有效 ② 检查元素是否在iframe里——捕获时影刀可能自动进了iframe,运行时没切进去

picture.image ③ 检查是否是动态ID——用contains()做模糊匹配替代精确匹配 ④ 在操作前加“等待元素出现”指令,不要只加固定延时

影刀设置里的一个隐藏功能:在“设置-设计器”中开启“捕获元素时使用AI优化元素”,AI会根据网页结构智能精选更稳定的节点属性。

2. “变量未定义”

单个运行时报错,整体运行却能通过。原因是变量在使用前没有被赋值。解决方法:在使用变量的指令之前,先用“设置变量”指令给它赋一个初始值,或者在流程开头声明为全局变量

3. “类型错误”

最常见的是“无法将列表转换为字符串”。比如循环Excel时,循环项是一个列表,你直接把它当文本填入输入框就会报错。解决方法:从列表中取第一项再使用。

4. “获取窗口失败”

通常是网络问题导致的。如果网速好的时候不报错、网速差的时候报错,那就是这个原因。解决方法:增加重试机制,比如用For次数循环重试3次。

5. 报错行号每次都不一样

这是最让人头疼的情况。只要能复现的问题都能解决——排查思路是逐个解决,让所有地方都稳定。通常跟以下因素有关:

  • 页面加载速度波动
  • 网络延迟不稳定
  • 元素出现时间不一致

解决方法:在关键操作前加“等待元素出现”,把不确定性变成确定性。

6. 自己电脑跑得好好的,换台机器就不行了

常见的坑包括:

  • 分辨率不同导致页面布局变化
  • 浏览器版本不同导致元素定位失败
  • 杀毒软件拦截鼠标模拟

解决方案:在部署文档里标注运行环境要求——分辨率至少1920x1080、Chrome保持在最新版、关闭360等安全软件。有条件的话统一配一台专门跑RPA的虚拟机。

无报错但结果不对的排查流程

这是最难的一种情况。我的排查步骤:

第一步:在流程开头关键节点打断点,单步执行一遍。观察:

  • 循环变量(页码、索引)的变化是否符合预期
  • 每个判断分支进入的是哪一侧
  • 关键变量(价格、数量、状态)的值是否干净

第二步:检查列表变量的长度。很多“数据少了几条”的问题,根源是“获取相似元素列表”只获取到了部分元素。在获取列表后加一行“输出日志”打印列表长度。

第三步:检查Excel数据。写入后打开Excel看一眼,是不是表头写错了位置、数据写到了错误的列。

五个调试习惯(比技巧更重要)

这些不是操作技巧,是两年踩坑换来的习惯

  1. 先手动跑通再写RPA:自己手动操作一遍完整流程,搞清楚每一步的页面状态和可能出现的异常情况。先手动跑3遍,用思维导图把分支情况列出来,再动手写机器人。

  2. 每个关键步骤都加日志:当前操作、读取到的数据量、是否成功。配合“输出日志”指令,排查效率翻倍。

  3. 异常处理不是越多越好:只对关键步骤加异常处理——数据写入、文件保存这些不可逆的操作。对于读取数据、页面跳转,“重试3次”就够了。

  4. 拆分比大而全更重要:把一个大流程拆成几个独立的小流程,每个只做一件事。用影刀的“流程调用”功能串起来。任何一个环节出问题都不会影响其他的。

  5. 做好心理准备80%的时间在调试,20%的时间在享受自动化。这行就是这样,慢慢来比较快。

常见问题速查表

问题现象优先排查方向调试工具
流程报错但不知道哪一行看运行日志,搜“error”关键词日志系统
流程不报错但数据不对打断点单步执行,观察变量变化断点+变量面板
元素有时能找到有时找不到检查是否动态ID、是否在iframe中XPath Helper
定时任务跑崩了不知道原因看日志,检查Catch块是否输出了错误信息日志系统
子流程报错看不到具体指令在子流程Catch块里打印exception输出日志

推荐资源

  • 影刀官方帮助文档搜索“调试”,有完整的调试功能说明
  • 影刀B站官方账号搜索“调试”,有视频教程
  • 影刀开发者社区搜索“报错”或“调试”,有大量实战案例

#影刀RPA #RPA自动化 #调试技巧 #报错排查 #异常处理 #定时任务

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。如果这篇文章对你有帮助,欢迎点赞收藏,下一篇我们聊“子流程设计与模块化开发规范”。

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