
影刀RPA新手教程断点调试与变量面板——无报错也能排查的技巧最折磨人的流程问题不是报错是不报错但结果不对数据少了半列、循环少跑一轮、表格里出现一行空值日志里干干净净什么都没有。这种时候靠猜是猜不出来的影刀RPA的断点调试和变量面板就是专门解决这类问题的工具。我第一次遇到这种问题是在一个Excel关键字搜索的流程里跑完发现搜索结果里混着一次空搜索怎么都想不通。最后靠在循环里打断点、盯着变量面板看循环项的值发现表格里藏了一行空行。从那以后调试面板成了我每次开发必开的工具。很多新手有个误区觉得调试是程序员的技能自己学不会。恰恰相反影刀RPA的调试就两个动作打断点、看变量十分钟就能上手。调试入口与基本规则什么时候能调试影刀RPA的调试只能在编辑器里进行。计划任务执行、API调度执行、后台调度执行或者应用外右键运行都不能调试。所以排查问题前先把流程在编辑器里打开用调试方式启动。打断点的操作鼠标移动到目标指令行号后面的空白处点击一下指令前会出现一个橙色的点这就是断点。再点一下就取消。有一条规则必须先记住不然你会被绕晕程序执行到断点暂停时这条断点指令还没有被执行。也就是说你在第五行打断点流程暂停时看到的是前四条指令执行完的状态。观察变量时要清楚这一点判断的是变量此刻的值不是这条指令执行后的值。变量面板一眼看清所有变量的实时值和类型流程在断点处暂停时编辑器下方的调试变量板块会显示当前所有已定义变量的实时值和类型。这是整个调试体系里最有价值的部分。变量面板能帮你确认三件事值对不对比如Excel对象是不是None、循环项是不是你预期的内容类型对不对明明以为是字符串面板里显示的是列表类型错误当场现形变化过程对不对在循环里反复暂停观察同一个变量每轮的变化变量面板常见显示含义典型原因None变量没被赋值忘了写赋值指令或赋值指令没执行[‘a’, ‘b’]列表把列表当字符串用了[None]列表里有一项是空源数据有空行或空单元格类型名对但值很怪数据源问题回到上游检查取数逻辑继续、单步调试与循环排查的组合拳暂停后有两个按钮决定流程怎么走下去点继续流程从断点接着往下执行直到撞到下一个断点或执行结束点单步调试执行当前暂停位置的下一条指令然后再暂停。这两个按钮配合断点就能实现在循环里一轮一轮盯着看在循环体内的关键指令上打断点运行第一次暂停看变量面板里循环项的值点继续流程跑完本轮又回到同一断点暂停再看循环项直到发现问题出现的那一轮我在排查Excel空行问题时就是这么干的断点打在循环内填写输入框的指令上每点一次继续看一眼循环项变量点到某一轮发现变量是[None]回表格一查果然有一行是空的。删掉空行流程正常。单步调试适合范围更小的排查。不确定问题出在哪几行时先单步走几轮缩小范围后再改用断点继续效率最高。一条真实的调试路径从报错到修复用一个官方文档里也演示过的典型场景串一遍完整流程应用功能是批量把Excel里的关键字填进百度搜索。浏览器和表格都已打开运行时报错AttributeError: NoneType object has no attribute get_active_sheet这个报错翻译过来就是某个变量是None却被人调用了方法。排查步骤在报错的指令前打断点重新运行暂停时看变量面板发现Excel对象变量是None原因清楚了没用启动Excel或获取当前激活的Excel指令给这个变量赋值补上获取Excel的指令取消断点继续跑修完这个又冒出新报错Can not convert Array to String.。继续用同一套方法在填写输入框的指令上打断点发现循环Excel内容时循环项是个列表而不是字符串——原来读取表格时读的是区域每行进来是个列表。改为从列表中取第一项填入通过。你看两次问题都不是靠猜是靠断点变量面板实锤的。这就是调试工具的价值它把我觉得哪里不对变成我看到哪里不对。变量与数据类型调试排查的知识底座想在变量面板里看出问题你得先了解影刀RPA的基本数据类型不然面板里的内容你都读不懂。数字和字符串字符串有索引和拼接操作注意从界面取的值默认都是字符串列表Excel读取区域、获取相似元素列表返回的都是列表循环遍历用ForEach列表循环字典按键取值键不存在时要么给默认值要么先判断键是否存在两种方案都行JSONHTTP返回的数据先转JSON再取字段最后转文本输出调试时最常见的类型陷阱就是列表当字符串和字符串当数字。前者报Can not convert Array to String后者在拼接或比较时出诡异结果。面板里看到方括号就要警觉这是列表。流程控制与调试的配合断点打在哪里最有效断点位置选得好排查效率翻倍。我的经验是按流程结构选位置流程结构推荐断点位置观察目标循环体循环内第一条指令每轮循环项的值If判断判断指令前条件表达式涉及变量Try块每个可能出错指令前哪条指令前状态异常子流程调用调用指令前传进子流程的参数值While条件循环要特别当心条件写错会死循环调试死循环流程时直接点停止别等它自己停。防死循环的惯例是给While加计数器变量超过上限就退出这个计数器在调试时也是绝佳的观察对象。网页与桌面场景的调试差异网页自动化调试有个额外便利暂停时浏览器状态是保留的你可以直接切到浏览器看页面当前长什么样和变量面板对照着分析。元素定位类的问题XPath写错、元素没加载出来多半能这样当场确认。桌面软件调试的注意点是不打断点跑正常流程时鼠标被机器人占用你手动乱点会干扰流程调试暂停时则可以自由操作软件趁机检查窗口状态、弹窗内容。桌面流程里我经常在暂停时手动翻一翻软件界面确认下一个要操作的界面元素真的存在。数据处理与进阶模块的排查思路Excel和数据库模块的调试核心是确认数据在每一层是什么样子读进来什么样、清洗完什么样、写出去什么样。在这三个节点各打一个断点数据流一眼看穿。Python代码块的调试略特殊在Python里加print输出跑完在输出面板看打印结果或者干脆把Python的中间结果保存到影刀变量里用影刀的变量面板看。HTTP请求的调试重点看返回的状态码和响应体把响应转成JSON后在面板里逐层展开检查字段。工程化规范让调试成果沉淀下来调试完不能只把问题修了就完事好习惯是做三件事把当时的断点位置和变量值记录在流程的注释里下次同类问题直接翻笔记在出过问题的环节加输出日志把关键变量打印出来以后无调试运行也能追溯给出过问题的上游数据加校验比如过滤空行从源头堵住完整流程源码我放在代码仓库 home.linyan.cloud里面带了一套关键节点打印变量的日志模板照着改就能用。易错速查断点处变量是None八成是赋值指令漏了或没执行到往前单步查循环最后一轮值不对先怀疑数据源有空行空格去源头查而不是改流程报Can not convert Array to String把列表变量换成列表[0]取单项调试正常一跑就错检查是不是依赖了调试时手动操作的软件状态While疑似死循环加计数器变量和退出条件停止后重新调试断点调试练熟之后你会发现排查问题的速度和之前完全不是一个量级。以前一下午的排查现在十分钟定案。工具就摆在那里橙色的小圆点点下去就对了。#影刀RPA #RPA自动化 #断点调试 #变量面板 #报错排查作者林焱