流程跑着跑着突然报错,红色弹窗一出来就懵了。
找不到元素、超时、类型错误、权限不足……影刀RPA的报错信息有时候很直白,有时候绕来绕去。我非技术出身,做电商采集两年,这些报错几乎全踩过一遍。
其实90%的报错,原因就那几种。
下面把最常见的10个错误和修复方法列出来,照着查就行。
找不到元素:报错信息与三种排查方向
报错信息:元素未找到 / Element not found / 等待元素超时
原因:XPath写错、页面没加载完、元素在iframe里。
排查步骤:
- 把XPath拿到浏览器F12里验证,看能不能定位到
2. 检查前面有没有加“等待元素出现”指令
- 检查元素是否在iframe中,需要先“切换至iframe”
# 捕获元素:拼多多商品标题(容易失效的写法)
/html/body/div[3]/div[2]/a

# 改成模糊匹配(推荐)
//div[contains(@class,'goods-list')]//a[contains(@class,'title')]
# 如果元素在iframe里,先加“切换至iframe”指令
# 捕获iframe元素,然后在内层再定位
| 排查方向 | 检查点 | 修复方法 |
|---|---|---|
| XPath | 是否绝对路径 | 改contains模糊匹配 |
| 等待 | 是否加载完 | 加“等待元素出现” |
| iframe | 是否嵌套 | 先切换iframe |
超时错误:等待指令与网络问题的区分
报错信息:等待元素超时 / 请求超时 / Timeout
原因:网络慢、页面结构变了、超时时间设太短。
排查步骤:
- 看是“等待元素超时”还是“HTTP请求超时”
- 如果是等待元素,把超时从10秒改成30秒
- 如果是HTTP请求,检查URL是否可访问
- 加Try-Catch捕获超时,记录日志后重试
# 影刀RPA中“等待元素出现”指令,超时设30秒
# 超时后进入Catch块,输出日志
# 不要设60秒以上,浪费社区版额度
类型错误:文本与数字比较的陷阱
报错信息:类型不匹配 / TypeError / 无法比较
原因:把文本当数字用,或者把数字当文本用。
排查步骤:
- 用“输出日志”打印变量值,看是文本还是数字
- 文本转数字用
float()或int() - 数字转文本用
str() - 比较前统一类型
# 错误写法:价格是文本"29.90",直接和数字30比较
if 价格 > 30: # 报错
# 正确写法:先转换
价格数字 = float(价格)
if 价格数字 > 30:
pass
权限不足:文件、数据库、API的常见权限问题
报错信息:权限不足 / Access denied / 403 Forbidden
原因:文件被占用、数据库没权限、API Token过期。
| 场景 | 报错 | 修复 |
|---|---|---|
| 写Excel | 文件被占用 | 先关闭Excel |
| 连数据库 | 权限不足 | 检查账号密码 |
| 调API | 403 | 重新获取Token |
| 写文件 | 拒绝访问 | 换路径或管理员运行 |
变量未定义:作用域与命名错误
报错信息:变量未定义 / NameError / 变量不存在
原因:变量名写错、子流程变量未传递、循环变量作用域问题。
排查步骤:
- 检查变量名大小写是否一致
- 子流程内的变量默认局部,需要用输出参数传回
- 循环内的变量在循环外不能用
- 用“设置变量”指令显式声明
# 影刀RPA中,子流程输出参数要赋值
# 子流程内部:设置变量 result = 采集数据
# 子流程参数设置:输出参数 result
# 主流程调用后,用“调用子流程”的输出变量
翻页卡死:循环条件与防死循环设置
报错信息:没有报错,但流程一直卡在翻页。
原因:循环条件永远为真,或者点击下一页没生效。
修复方法:
- 循环条件加最大次数限制,比如100次
- 判断下一页按钮是否可点击,不是仅判断存在
- 点击后加“等待元素出现”,确认页面变了
- 加Try-Catch包住点击操作
# 捕获元素:下一页按钮(可点击)
//*[contains(text(),'下一页') and not(@disabled)]
# 如果XPath返回空,循环退出
# 影刀RPA“循环条件”指令中设置最大循环次数100
中文乱码:编码问题与解决方案
报错信息:没有报错,但写入文件或数据库后中文变乱码。
原因:编码不是UTF-8。
修复方法:
- 写文件时指定
encoding='utf-8' - 数据库连接时指定
charset='utf8' - HTTP请求头加
Content-Type: application/json; charset=utf-8 - Excel保存时选UTF-8
# 影刀RPA中执行Python:写文件指定编码
with open('日志.txt', 'a', encoding='utf-8') as f:
f.write('中文内容')
浏览器崩溃:内存占用与多实例冲突
报错信息:浏览器已关闭 / Connection refused / Chrome not reachable
原因:浏览器实例太多、内存不够、Profile冲突。
修复方法:
- 每个流程结束后关闭浏览器
- 多账号用独立Profile,不要共用
- 加“关闭浏览器”指令在Finally块
- 社区版30分钟/天,浏览器开太久会卡
| 问题 | 原因 | 解决 |
|---|---|---|
| 浏览器关闭 | 内存不足 | 减少实例 |
| 连接拒绝 | 端口冲突 | 换端口 |
| Profile冲突 | 共用目录 | 独立目录 |
定时任务未触发:计划任务配置检查清单
报错信息:没有报错,但定时任务没跑。
检查清单:
- 电脑是否休眠?电源设置改为“从不睡眠”
- 社区版额度是否用完?30分钟/天
- 流程是否被手动停止?检查运行报告
- 计划任务时间是否设对?检查时区
- 影刀客户端是否在运行?必须保持开启
# Windows任务计划程序调用影刀
# 程序:C:\Program Files\ShadowBot\ShadowBot.exe
# 参数:-run "流程名称"
# 起始于:影刀安装目录
# 勾选“不管用户是否登录都要运行”
API报错:状态码与错误信息的快速定位
报错信息:400 / 401 / 403 / 404 / 500
原因:请求参数错、Token过期、权限不足、URL错、服务器错。
| 状态码 | 含义 | 修复 |
|---|---|---|
| 400 | 请求参数错 | 检查JSON格式 |
| 401 | 未授权 | 重新获取Token |
| 403 | 禁止访问 | 检查权限 |
| 404 | 找不到 | 检查URL |
| 500 | 服务器错 | 重试或联系支持 |
# 影刀RPA中“HTTP请求”指令,可以查看返回状态码
# 用“提取JSON数据”指令解析返回内容
# 如果code不是0,输出日志记录错误信息
常见问题速查
Q:魔法指令能帮我排查报错吗?
A:影刀3.0的魔法指令可以分析报错信息并给出建议,但具体修复要自己操作。
Q:社区版报错和创业版有区别吗?
A:报错信息一样。但社区版30分钟/天,报错后重试会消耗额度。
Q:报错日志在哪里看?
A:影刀RPA底部“运行日志”面板,以及你自定义的文件日志。
Q:怎么减少报错?
A:加等待、加Try-Catch、用模糊XPath、控制频率。这四招能解决80%的报错。
推荐资源
- 影刀RPA官方学院“报错排查”专题课,免费
- 影刀社区搜索“常见报错”,有错误码对照表
- 官方文档“错误处理”章节,有完整说明
#影刀RPA #RPA自动化 #报错排查 #常见错误 #避坑指南
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
