影刀RPA避坑指南_新手最容易犯的10个错误与修复方案
影刀RPA避坑指南:新手最容易犯的10个错误与修复方案
带过好几个刚接触影刀的同事,发现大家踩的坑高度相似。
同样的错误,不同的人反复踩。这篇文章把新手最高频的 10 个错误整理出来,每个都附上修复方案。读完能帮你少走不少弯路。
错误1:所有等待都用"固定等待"
症状:流程里全是"等待 3 秒"“等待 5 秒”,跑一次要半小时。
问题:固定等待不管你页面加载完了没有,傻等。页面快了就是浪费,慢了就报错。
修复:
# 不好等待(5秒)点击元素("按钮")# 好等待元素出现("按钮",10秒)# 最多等10秒,出现了就继续点击元素("按钮")规则:操作元素前用"等待元素出现",不要用固定等待。固定等待只用在"必须间隔一段时间"的场景(比如验证码倒计时)。
错误2:直接用"点击元素"而不先判断
症状:弹窗没出现时报错"找不到元素",流程崩了。
问题:你应该点击的元素不一定每次都在页面上。
修复:
# 不好点击元素("关闭弹窗按钮")# 弹窗没出现就报错# 好判断元素是否存在("关闭弹窗按钮")->弹窗存在 如果 弹窗存在:点击元素("关闭弹窗按钮")不确定元素会不会出现的时候,永远先判断再点击。
拼多多店群自动化报活动上架!
错误3:循环里反复读 Excel
症状:每次循环都调用"读取 Excel",流程越来越慢,内存越来越高。
问题:每次"读取 Excel"都会重新加载整个文件,之前的修改可能被覆盖。
修复:
# 不好遍历列表(账号列表,当前账号):读取Excel("账号.xlsx")->账号表# 每次循环都读!账号=获取单元格值(账号表,行号,1)# 好读取Excel("账号.xlsx")->账号表# 只读一次遍历列表(账号列表,当前账号):账号=获取单元格值(账号表,行号,1)读一次,循环里操作表格对象,最后保存一次。
错误4:忘记保存 Excel
症状:流程跑完了,打开 Excel 发现什么都没写进去。
问题:影刀的"写入行数据"只是改内存里的表格对象,不会自动写回文件。
修复:
# 所有修改操作后,最后必须调用保存Excel(表格对象,"D:\结果.xlsx")# 或导出表格(表格对象,"D:\结果.xlsx")养成习惯:每次流程的最后一步一定是保存。
错误5:XPath 用绝对路径
症状:在自己电脑上跑得好好的,换个电脑就报"找不到元素"。
问题:绝对 XPath 像/html/body/div[2]/div[3]/span[4],页面结构一变就失效。
修复:
# 不好:绝对路径XPath="/html/body/div[2]/div[3]/div[1]/span"# 好:属性定位XPath="//input[@placeholder='请输入商品名称']"# 好:文字定位XPath="//button[contains(text(),'搜索')]"# 好:class定位(取稳定部分)XPath="//div[contains(@class,'search-box')]//input"错误6:变量名用中文但包含空格
症状:调试的时候变量值莫名其妙变空。
问题:影刀变量名里如果有特殊字符或前后空格,赋值可能不生效。
修复:
变量命名规范:
- 用下划线不用空格:
商品价格→商品_价格 - 不要用特殊符号:
价格¥→价格_元 - 变量名尽量简短
错误7:没有处理"没数据"的情况
症状:搜索一个冷门关键词,结果返回 0 条,流程直接报错。
问题:获取相似元素列表返回空列表,后面的遍历逻辑挂了。
修复:
获取相似元素列表("商品卡片")->商品列表# 先判断有没有数据获取列表长度(商品列表)->数量 如果 数量==0:输出日志("没有搜索到商品,跳过")继续下一次循环# 或结束流程# 有数据才遍历遍历列表(商品列表,当前商品):处理商品数据()错误8:try-catch 把所有异常都吞掉
症状:流程从不报错,但数据经常少几条,又不知道是哪里丢了。
TEMU店群矩阵自动化运营核价报活动
问题:try 包了太大的范围,里面任何异常都被 catch 静默处理了,但你不知道。
修复:
# 不好:try 包了整段逻辑Try:打开网页()登录()采集数据()保存结果()Catch 异常:# 啥都不做,或只打一行日志输出日志("出错了")# 好:只 try 可能失败的具体操作打开网页()登录()Try:批量采集商品数据()Catch 异常:输出日志(f"采集失败:{异常.message}")截图("D:\截图\采集失败.png")# 不清空已采集的数据保存结果()错误9:多流程共用同一个 Excel 文件没有做冲突处理
症状:两个流程同时写一个 Excel,数据错乱或文件损坏。
问题:Excel 不支持并发写入。两个流程同时调用"保存"会打架。
修复:
# 方案1:每个流程写不同的文件文件名=f"D:\采集结果_{流程编号}_{日期}.xlsx"# 方案2:用数据库替代Excel# SQLite天然支持并发读和串行写# 方案3:加文件锁importfcntl# Linux# 或用一个临时标志文件判断是否有人在写错误10:在线上环境直接改流程
症状:改了一个参数想测试,结果把正在跑的任务搞崩了。
问题:影刀的应用编辑和运行是在同一个界面,保存即生效。
修复:
改之前先导出一份备份(右键应用→导出)
重要流程用版本号管理:
商品采集_v1.2.0、商品采集_v1.3.0测试用的改到"测试版"应用里,测试完再同步到正式版
定时任务不要指向正在开发的应用
总结:新手避坑速查
| 序号 | 错误 | 一句话修复 |
|---|---|---|
| 1 | 全用固定等待 | 操作元素前用"等待元素出现" |
| 2 | 不判断就点击 | 不确定时先"判断元素是否存在" |
| 3 | 循环里反复读Excel | 读一次,循环操作对象 |
| 4 | 忘记保存 | 流程最后一步必保存 |
| 5 | XPath用绝对路径 | 用属性/文字定位,不用body/div[n] |
| 6 | 变量名有空格 | 用下划线,不用中文空格 |
| 7 | 没处理空数据 | 遍历前先判断列表长度 |
| 8 | try-catch范围太大 | 只包可能失败的操作 |
| 9 | 多流程写同一个Excel | 分文件或换数据库 |
| 10 | 线上直接改流程 | 改前备份,测试版先测 |
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
