影刀RPA新手教程:错误告警完全指南——流程出错时自动发消息通知自己
一、开篇:流程默默挂掉的恐惧
我最怕的事情是:定时任务默默失败了,我却不知道。
有一次我去外地出差三天,回来发现我的数据采集流程已经挂了两天了。没人告诉我,流程也没任何提示。
另一个同事调侃说:“你这机器人有点不靠谱啊。”
从那以后我学乖了,所有流程都加了错误告警。现在流程只要一出错,我手机马上震。
今天教你最基础、最实用的错误告警方案,一行代码都不要你写。
二、安装与基础配置
影刀安装:官网下载Windows版,安装时勾选浏览器扩展。
告警方案需要两个条件:
- 影刀流程(用来执行任务)
- 一个能接收消息的地方(飞书、企业微信或邮件都可以)
推荐用飞书或企业微信,因为消息即时送达,手机上就能看。
如果是邮件告警,延迟可能会有一两分钟,但也比没有强。
配置机器人Webhook的方法上两篇文章已经讲了,这里不再重复。
核心就一句话:创建飞书/企业微信群机器人,拿到Webhook地址,保存好。
三、元素定位回顾
告警流程本身不涉及元素定位,但流程出错的原因往往和元素定位有关。
最常见的错误就是"元素未找到"。
XPath定位示例://button[contains(@class,'primary') and text()='提交']。这个XPath找到class包含primary且文字是"提交"的按钮。
有一个防御技巧:写两个定位方式做后备。第一个用XPath,找不到时用备用的CSS选择器。
CSS备用定位:.submit-btn-primary。
正则表达式用来验证抓取的数据格式,比如邮箱格式:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$。
数据验证放在数据抓取之后处理之前,格式不对的数据跳过或标记。
拼多多店群自动化上架方案
四、变量与错误信息
错误告警中最关键的内容是:告诉你是谁出错了、哪里出错了、什么原因。
Python代码放在"执行Python代码"指令里:
影刀可以通过变量exception_info获取错误信息。在Try-Catch的Catch块中,这个变量自动包含出错详情。
告警消息的变量构造:
error_time = "{}{}{} {}{}{}{}{}{}".format(now.year, "-", now.month, "-", now.day, " ", now.hour, ":", now.minute) alert_msg = "【流程异常告警】\n流程名称:数据采集\n发生时间:" & error_time & "\n错误详情:" & exception_info如果用Python拼接,可以写得更清晰:
alert_msg=f"""【流程异常告警】 流程名称:{flow_name}发生时间:{error_time}错误信息:{exception_info}请及时处理!"""数据类型的坑:确保所有拼接进去的变量都是字符串类型,数字要先转字符串。
五、流程控制:Try-Catch核心
Try-Catch是错误处理的脊梁骨。不理解它,告警无从谈起。
Try-Catch在影刀里是一个指令块,在"流程控制"分类下可以找到。
拖一个"Try-Catch"指令到画布上,它会分成上下两块区域。
上面的区域叫"Try块",放你的正常业务流程。下面的区域叫"Catch块",放出错时要执行的操作。
工作原理:影刀先执行Try块里的内容。如果一切正常,跳过Catch块。如果Try块里任何地方出错,立即跳到Catch块执行。
在Catch块里放什么?放一个"发送飞书消息"的HTTP请求指令。
这样流程出错的瞬间,你就会收到消息通知。
Try-Catch可以嵌套,但初学者一层就够了。
六、核心实战:第一个错误告警流程
现在直接动手做。假设你有一个简单的数据采集流程。
第1步:在画布上先拖一个"Try-Catch"指令。
第2步:把原来所有的流程步骤(打开网页、登录、采集数据、保存Excel)全部拖进Try块里。
第3步:在Catch块里放:
- 一个"输出日志"指令,内容写
"流程出错:" & exception_info - 一个"发起HTTP请求"指令,配置飞书Webhook地址,发送告警消息
HTTP请求的请求体:
{"msg_type":"text","content":{"text":"【流程异常】数据采集流程运行失败,请及时检查。错误信息:exception_info"}}第4步:保存流程,手动把某个步骤搞错(比如故意填错XPath),然后运行测试。
你应该能收到飞书消息通知,内容是流程出错了。
这个基础框架搭好后,任何流程都能往里面套。
七、进阶:告警消息的细节优化
基础的告警只有一句话"出错了",但好的告警应该包含更多信息。
扩展告警信息的内容:
- 流程名称:知道是哪个流程出问题
- 错误时间:精确到秒
- 错误类型:元素未找到、变量未定义、网络超时等
- 出错步骤:流程里第几步出错了
- 建议操作:给一个排查方向
Python代码示例,放在Catch块的"执行Python代码"指令里:
flow_name="每日数据采集"step_name="当前步骤名称"error_msg=str(exception_info)alert=f"""⚠️ 流程异常告警 流程:{flow_name}步骤:{step_name}时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}错误:{error_msg}建议:请检查网页是否改版或网络是否正常"""然后把alert赋值给影刀的变量alert_message,发给飞书。
这类告警模板我整理了一些在home.linyan.cloud,可以直接参考。
八、进阶:分级告警
不是所有错误都需要你立刻处理。可以根据严重程度分级告警。
Level 1 - 信息:流程成功但有小问题。比如"数据少采集了2条,但不影响主流程"。
Level 2 - 警告:流程能跑但结果可能不对。比如"数据格式异常,已跳过3条"。
Level 3 - 错误:流程中断。必须立刻处理。
在Catch块里用If条件判断错误类型:
if "元素" in error_msg: level = "警告" elif "网络" in error_msg: level = "警告" else: level = "错误"不同级别可以发到不同的群。错误级发到紧急群,警告级发到日志群。
TEMU店群如何管理运营?
九、平台实战:完整错误处理流程
现在串一个带完整错误处理的流程。
流程结构:
- Try块:
- 步骤1:打开浏览器,跳转到数据看板
- 步骤2:登录系统
- 步骤3:等待数据加载
- 步骤4:批量数据抓取
- 步骤5:数据验证
- 步骤6:写入Excel
- 步骤7:发送飞书成功通知
- Catch块:
- 步骤1:拼接错误消息
- 步骤2:发送飞书告警消息
- 步骤3:发送企业微信告警(双保险)
- 步骤4:输出详细的错误日志
双保险告警最让人安心:飞书和企业微信同时通知,减少漏看的可能。
如果飞书挂了,企业微信还能收到;反之亦然。
十、系统联动
错误告警可以和更多系统打通,形成一个完善的监控体系。
与定时任务联动:在调度中心配置定时执行,出错时自动告警。
与日志系统联动:告警消息里带上日志链接或关键日志内容。
与重试机制联动:出错后自动重试。影刀枚举里有重试策略:retry(重试)、retry_continue(重试后继续)。
异常执行策略配置:
- terminate:出错停止(默认)
- continue:出错继续
- retry:出错重试
- retry_continue:重试后继续
在调度配置里可以设置这些策略。一般选retry,重试1-2次。
十一、工程化规范
错误处理的工程化建议:
所有生产流程必须有Try-Catch包裹。
Catch块必须有告警通知,不能只写一条日志就完事。
告警消息里包含流程名称和错误时间。
不要在告警消息里暴露敏感信息(密码、token)。
定期演练告警效果,确保消息能正常收到。
告警消息建议发送到一个专门的群,不要混在正常工作群里。
记录告警的历史,分析最常见的错误类型并优化流程。
十二、速查表
异常处理策略速查:
- terminate:停止执行
- continue:继续执行
- retry:重试
- retry_continue:重试后继续执行
告警渠道配置速查:
- 飞书:msg_type=“text”,content.text写入消息内容
- 企业微信:msgtype=“text”,text.content写入消息内容
- 邮件:SMTP配置发送告警邮件
常见错误类型速查:
- ElementNotFound:元素未找到
- VariableNotDefined:变量未定义
- ConnectionTimeout:连接超时
- FileNotFound:文件未找到
- TypeMismatch:类型不匹配
- PermissionDenied:权限不足
作者:林焱
#影刀RPA #RPA教程 #错误告警 #TryCatch #影刀新手 #自动化运维 #监控告警