
影刀RPA新手教程运行日志三层记录法——出问题3分钟定位流程半夜挂了第二天打开一看只有一句执行异常具体挂在哪一步、数据长什么样、当时页面是什么状态全都不知道——这种抓瞎的感觉我头一年至少经历了二十回。后来我给影刀RPA流程加了三层日志记录现在出问题基本3分钟内定位到具体指令和数据值这篇把这套方法完整教给你。先给新手吃颗定心丸日志不是什么高深东西就是在流程的关键位置插打卡记录。影刀RPA本身已经给了你三层现成的记录体系——流程内的输出日志、客户端本地日志、控制台执行记录你缺的只是知道每层看什么、怎么组合着用。三层日志各管一段第一层管流程自己说了什么第二层管客户端底层发生了什么第三层管哪次运行出了问题。下面从第一层开始讲。第一层流程内「输出日志」指令的三种级别输出日志指令在指令面板搜日志就能找到往流程里一拖就能用。我把它按用途分成三级命名上直接区分级别记什么例子节点级进入哪个大模块【采集】开始处理第3页数据级关键变量的值抓到价格59.9共120条异常级报错信息和现场等待超时元素下一页按钮节点级日志放在每个子流程入口和出口数据级放在循环体内和写入动作前异常级放在Try-Catch的Catch块里。Catch块里固定做两件事「错误截图」加「输出日志」截图存错误现场日志记下报错文本和当时的变量值第二天打开就有完整现场。有个容易忽略的细节输出日志有字符串长度限制官方FAQ写明最大可打印2万个字符左右。别把整张表格一口气丢进日志循环里逐行打关键列就够了我打印整表超长那次日志被截断反而误导了排查方向。日志格式我统一用【模块】动作关键值比如【写入】已写入第15行总行数120。格式统一的好处是控制台执行记录里扫一眼就能看清卡在哪一步。带异常捕获的日志骨架新手直接抄Try-Catch-Finally是第一层日志的骨架新手照这个结构搭流程# 输入无输出日志文件 night_run.log追加写# 结构Try主流程 / Catch记录现场 / Finally收尾可直接套用# —— Try块主流程——# 1. 输出日志【启动】开始执行采集流程# 2. 打开网页指令URL参数填目标地址打开方式选新建标签页# 3. 等待元素出现超时30秒元素商品列表容器# 4. 获取相似元素列表存入变量 price_list# 5. 输出日志【采集】共获取条数len(price_list)# 6. 写入行数据到表格循环逐行追加写入Excel# —— Catch块异常现场——# 1. 错误截图指令保存到 D:\error_shots\文件名带时间戳# 2. 输出日志【异常】 捕获到的报错文本 当前行号变量# —— Finally块收尾——# 1. 关闭浏览器# 2. 关闭Excel# 3. 输出日志【结束】流程退出无论成败Python块里也可以自己补一份落盘日志和控制台日志双保险# 输入step_name步骤名、info附加信息# 输出D:\night_run.log 追加一行带时间戳的记录fromdatetimeimportdatetimedeflog_step(step_name,info):nowdatetime.now().strftime(%m-%d %H:%M:%S)withopen(rD:\night_run.log,a,encodingutf-8)asf:f.write(f[{now}][{step_name}]{info}\n)log_step(采集,第3页完成累计360条)第二层客户端本地日志与导出日志按钮流程内日志解决我的流程说了什么客户端本地日志解决客户端底层发生了什么——启动异常、插件失联、登录问题这类流程外的原因要看第二层。官方给的查看方法两条路快捷键 WinR 打开运行窗口输入路径 %localappdata%\ShadowBot\log回车打开日志文件夹按时间倒序看最新的日志文件资源管理器地址栏直接粘贴这个路径也行5.14版本及之后在「个人头像右键 → 设置 → 关于影刀 → 导出日志」按钮把日志打包导出到自定义位置我的习惯是夜间任务挂了先看第三层执行记录确认哪次运行出的事再开本地日志翻对应时间点最后回到流程内日志看具体步骤。三层从粗到细路径固定练两次就是肌肉记忆。第三层控制台执行记录与运行详情定时任务跑的每一次都有底账。控制台进「任务管理 → 执行记录」能看到任务执行的详情点进运行详情可以结束执行中的计划对执行出异常的计划查看原因、重新运行异常的应用。所有执行记录统一放在执行记录菜单里包括API执行记录。任务监控页还有四个汇总数字当前执行应用数、等待执行应用数、今日完成应用数、今日执行异常数。每天早上扫一眼今日执行异常是否为零不为零就点进执行记录走一遍三层定位。告警通知也在这个页面配置邮箱、钉钉、企业微信、飞书都可以接异常自动推人不用等你自己发现。元素定位与等待让日志里的报错值得看日志定位的前提是报错信息本身有意义。定位不稳定的流程日志里天天是找不到元素噪声太大反而掩盖真问题。所以第一层日志之前先把定位做稳元素捕获点「捕获元素」按钮浏览器出现橙色边框点击目标结构不稳定就用XPath写到属性级往下找用CSS选择器往上找、按文本找用XPath。# 场景日志报等待超时时先核对这些定位是否还成立 # 唯一id定位最优先 //*[idgoods-list] # class属性定位 //div[classitem-price] # 文本模糊匹配应对文案微调 //*[contains(text(),立即购买)] # 参照物定位借销量文本找旁边的数字 //*[contains(text(),销量)]/following-sibling::*[1] # CSS等价写法父子层级用 号更短 #goods-list .item-price等待策略三种——固定等待、超时等待、智能等待新手统一用「等待元素出现」设30秒超时超时本身就是一条有价值的异常日志。页面总页数不确定时用「判断元素是否存在」检查下一页按钮class里的disabled配合While条件循环退出。变量、循环与数据处理的日志埋点习惯变量类型决定你日志里能打什么数字直接拼进文本字符串用索引截关键段列表打长度别打全部字典先判断键存在再取值JSON解析后打关键字段。循环体里的埋点别每轮都打按每10轮打一次进度节流既看得见进展又不刷屏。数据处理的三个环节各有埋点位置Excel读完后打行数、清洗后打前后差值、数据库写入后打影响行数。建立连接→执行SQL→关闭连接三步哪一步失败日志就打哪一步的名字别笼统写数据库出错。埋点时机在开发阶段就要定跑通之后再补埋点等于重写一遍流程。我的做法是搭主流程骨架时就把三类日志位的空指令拖好填充业务逻辑时顺手填日志参数开发完日志也齐了一举两得。环节埋点指令打什么读取完成输出日志读取行数与文件路径清洗完成输出日志清洗前后条数对比写入完成输出日志写入行数与目标表名异常发生错误截图截图加报错文本鼠标键盘图像与平台实战的日志要点鼠标键盘类指令容易点了没反应日志里加一条已发送点击按钮名配合截图能分清是指令没执行还是执行了没生效。图像识别指令在日志里记下匹配度识别率忽高忽低的场景就该换定位方案了。平台实战里拼多多、淘宝、小红书各平台的反爬表现不同日志里记下每轮的采集间隔限流排查时这就是关键证据。进阶的HTTP请求和Python协同日志打请求状态码和返回摘要系统联动的飞书消息发送成功与否也要落一条日志通知通道本身也可能是故障点。断点调试与变量面板日志之外的两个定位利器日志是事后看断点是现场看。流程开发阶段右键任意指令可以添加断点点「运行」流程会停在断点上这时配合单步执行一行行往下走右侧变量面板里所有变量的实时值一览无余。数据不对这类问题日志只能告诉你第15行写进去的值不对断点能让你亲眼看到变量是在哪一步变成脏数据的。变量面板还有个新手不知道的用法循环断点时盯列表变量的长度和首尾元素采集丢数据多半是相似元素列表长度和预期不符在断点处一看便知。调试完记得删断点带着断点的流程挂上定时任务夜里跑到断点直接停住后面排队任务全部超窗——这个亏我吃过一次从此发布前先全局检查断点。调试三件套的分工输出日志管常态监控断点加单步管现场还原变量面板管数据核对。三个都用上就没有定位不了的问题。平台实战三平台采集流程的日志埋点差异平台不同日志侧重点不同。拼多多页面结构和价格符号变化多数据级日志里我固定打印清洗前后的价格原始值出问题一眼看出是采集错了还是清洗错了。淘宝有风控每轮采集间隔和是否触发验证码写进日志限流排查时时间线一目了然。小红书懒加载列表日志打印每轮滚动后相似元素列表的长度长度不再增长就是加载完了这个数字也是判断翻页逻辑是否正常的依据。鼠标键盘类操作的日志要点是动作目标比如驱动模式点击发布按钮图像识别的日志打印匹配情况匹配忽高忽低就该换元素定位方案。日志埋点不是越多越好按平台风险点埋噪声少信号强。日志排查易错速查序号现象原因与解法1日志内容被截断超出2万字符上限改逐行打关键列2只有执行异常没细节Catch块缺「错误截图」和「输出日志」3本地日志找不到WinR输入 %localappdata%\ShadowBot\log4日志刷屏找不到重点循环体按每10轮打一次级别分开5定时任务查不到记录应用未发版或机器人离线先查第三层延伸阅读与源码参考三层日志的埋点模板流程我放在代码仓库 home.linyan.cloud可以直接参考改造把模块名换成你的业务模块就能用。搭配官方FAQ《如何查看影刀的运行日志》《打印日志是否有字符串长度限制》一起看参数和路径以文档为准。#影刀RPA #RPA自动化 #运行日志 #调试技巧 #报错排查作者林焱