☰
影刀RPA进阶教程:分模块异常处理与自动错误截图系统搭建
2026/10/25 7:23:00 网站建设 项目流程

影刀RPA进阶教程:分模块异常处理与自动错误截图系统搭建

流程跑着跑着突然中断,你不知道在哪一步出错、当时页面长什么样,只能从头再来。这种痛苦做过自动化的都懂。影刀RPA的try-catch-finally机制加上自动截图,能把排错时间从小时级缩到分钟级。

这篇讲怎么给每个模块单独做异常处理,以及搭建一套自动错误截图系统。

分模块Try-Catch-Finally异常处理架构

影刀RPA的异常处理不是把整个流程包在一个Try里就完事,那样Catch块里根本不知道是哪一步出的问题。正确做法是按功能模块拆分,每个模块独立Try。

一个Try块只包一个功能模块,Catch块里记录模块名称和报错信息,这是分模块异常的核心。

操作步骤:

  1. 把流程按功能拆成模块:登录模块、采集模块、翻页模块、写入模块
  2. 每个模块外层包一个"Try-Catch-Finally"指令(在指令面板搜索"异常处理")
  3. Try块内放该模块的所有指令
  4. Catch块内拖入"输出日志"指令,日志内容写模块名+报错变量
  5. Finally块内放收尾操作(关闭弹窗、清理临时变量等)
# 影刀RPA中用"执行Python代码"指令实现分模块异常处理的日志格式deflog_error(module_name,error_msg,page_url):"""分模块错误日志记录"""log_entry={"时间":get_current_time(),# 影刀RPA中用"获取当前时间"指令"模块":module_name,# 如"登录模块"、"采集模块""错误":str(error_msg)[:200],# 截断过长的报错信息"页面":page_url,# 当前页面URL"状态":"异常"}![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/777abb8b868e499f86dd6d2d0a18dd79.png#pic_center)# 写入日志文件withopen("C:/Desktop/rpa_error.log","a",encoding="utf-8")asf:f.write(str(log_entry)+"\n")returnlog_entry# 各模块的异常处理结构:# 登录模块 → try: 登录操作 / catch: log_error("登录模块", error, url)# 采集模块 → try: 采集操作 / catch: log_error("采集模块", error, url)# 翻页模块 → try: 翻页操作 / catch: log_error("翻页模块", error, url)

影刀RPA的异常处理指令在右侧指令面板搜索"Try"就能找到,拖入后会出现三个区域:Try块、Catch块、Finally块,分别对应正常执行、异常捕获、收尾操作。

自动错误截图系统搭建

异常发生时光记录日志不够,你需要看到当时的页面状态。影刀RPA的"截取屏幕"指令可以在Catch块中自动截图,文件名带上时间戳和模块名。

操作步骤:

  1. 在Catch块中拖入"截取屏幕"指令
  2. 截图保存路径设为C:/Desktop/rpa_screenshots/
  3. 文件名格式设为{模块名}_{时间戳}.png
  4. 截图后拖入"输出日志"指令记录截图路径
  5. 把截图路径和报错信息一起写入日志文件
# 影刀RPA中自动截图的命名规则# 配合"截取屏幕"指令使用importosfromdatetimeimportdatetimedefget_screenshot_filename(module_name):"""生成带模块名和时间戳的截图文件名"""timestamp=datetime.now().strftime("%Y%m%d_%H%M%S")filename=f"{module_name}_{timestamp}.png"filepath=os.path.join("C:/Desktop/rpa_screenshots",filename)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cc8a7186bf7942aa8df42b0d132f53cf.png#pic_center)# 确保目录存在os.makedirs(os.path.dirname(filepath),exist_ok=True)returnfilepath# 使用:在Catch块中# 1. 先调用此函数生成文件路径# 2. "截取屏幕"指令的保存路径填入返回的filepath# 3. "输出日志"指令记录filepath

截图系统的关键:截图目录要提前创建,影刀RPA不会自动建目录,路径不存在会报错。

分模块异常处理对照表

模块Try块内容Catch块操作Finally块操作
登录模块打开网页、输入账号密码、点登录截图+记录"登录失败"关闭可能的弹窗
采集模块获取相似元素、提取文本截图+记录"采集失败"+当前URL清空临时变量
翻页模块点击下一页、等待加载截图+记录"翻页失败"+当前页码重置等待计数器
写入模块写入Excel、保存文件记录"写入失败"+已写入行数关闭Excel文件

错误通知推送与重试机制

异常发生后除了截图记录,还需要主动通知。影刀RPA可以通过Python发送企业微信通知,同时配合重试机制自动恢复。

操作步骤:

  1. 在Catch块截图和记录日志后,拖入"调用子流程"指令
  2. 子流程名为"发送错误通知",传入模块名和报错信息
  3. 子流程内用"执行Python代码"指令发送Webhook请求
  4. 重试机制:Catch块最后加一个计数器变量重试次数
  5. 如果重试次数<3,用"返回"指令回到Try块开头
  6. 重试3次仍失败,用"抛出异常"指令终止流程
# 影刀RPA中用"执行Python代码"指令发送企业微信错误通知# 需要配置群机器人的Webhook URLimportrequestsimportjsondefsend_error_notification(webhook_url,module_name,error_msg,screenshot_path):"""发送错误通知到企业微信群机器人"""content=f"""【影刀RPA异常通知】 模块:{module_name}错误:{error_msg[:100]}截图:{screenshot_path}时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"""data={"msgtype":"text","text":{"content":content}}try:response=requests.post(webhook_url,json=data,timeout=10)returnresponse.status_code==200exceptExceptionase:# 通知发送失败不影响主流程returnFalse# 影刀RPA中流程参数配置:# 子流程输入参数:module_name(String), error_msg(String), screenshot_path(String)# 子流程无输出参数

影刀RPA的子流程参数通过"流程参数输入输出"机制传递。在子流程编辑界面,右侧面板有"输入参数"和"输出参数"配置区域,添加参数后,调用时传入对应变量。

重试机制实现要点

要点说明
重试计数器每个模块单独维护一个计数器变量
重试间隔第二次重试等5秒,第三次等10秒
最大重试次数建议3次,超过则终止并通知

| 重试前清理 | Finally块中关闭弹窗、清理临时数据 |
| 日志区分 | 记录是第几次重试,便于分析 |

重试机制不是万能药,如果是XPath失效导致的错误,重试100次也没用。重试适合网络超时、页面加载慢这类偶发错误。

常见问题速查

  1. Q:Catch块里获取不到报错信息怎么办?
    A:影刀RPA的异常处理指令,Catch块中有一个默认的exception变量(在指令详情面板中可以看到变量名)。如果没看到,检查是否用的是"异常处理"指令而非手动Try逻辑。

  2. Q:截图文件太大占用空间怎么办?
    A:在"截取屏幕"指令详情面板中,可以设置截图区域为"指定元素"而非全屏。另外定期用Python脚本清理7天前的截图:os.remove(filepath)。

  3. Q:异常处理导致流程变慢怎么办?
    A:影刀RPA的Try-Catch本身不影响性能,变慢是因为Catch块中截图和发通知。把通知改成异步(不等待返回结果),截图区域缩小到报错元素附近。

  4. Q:社区版能用异常处理指令吗?
    A:可以,异常处理是影刀RPA的基础指令,社区版和创业版都支持。但社区版每天30分钟运行时长,异常重试会消耗时间,建议测试阶段用社区版,正式跑用创业版。

推荐资源

  • 影刀RPA官方文档 - 异常处理指令详细说明
  • 影刀RPA学习中心 - "流程健壮性设计"系列视频
  • Python requests库文档:用于企业微信Webhook通知的HTTP请求

#影刀RPA #RPA自动化 #异常处理 #报错排查 #日志系统


作者:林焱

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询