首页 / 资讯中心 / 文章详情

影刀RPA进阶教程:子流程拆分原则与参数传递实战

影刀RPA进阶教程:子流程拆分原则与参数传递实战 ★ FEATURED ARTICLE
影刀RPA进阶教程子流程拆分原则与参数传递实战主流程拖了两百多个指令滚动条缩成一粒米改一个翻页逻辑要在指令堆里翻半小时——这是我用影刀RPA做拼多多商品采集第一版时最真实的体验。当时我把登录、搜索、翻页、抓数据、写Excel全部塞在一条主流程里结果页面一改版整个流程跟着崩。后来我把这套东西拆成了六个子流程改版只需要动其中一个其他纹丝不动。这篇就讲子流程的拆分原则和参数传递适合已经能用影刀RPA跑通单一线性流程、但流程开始发胖的读者。如果你也遇到过改一处崩全身两个流程要重复写同一段登录逻辑这类问题这篇能直接给你一套可以照抄的拆法。主流程发胖的三个信号与拆分时机不是所有流程都要拆拆得太碎反而麻烦。我现在的判断标准是三个信号中一个就该考虑拆了。主流程指令超过50个右上角缩略图已经看不全结构同一段逻辑比如登录、写Excel、发通知在两个以上流程里重复出现每次页面改版你要在主流程里翻找半天才知道该改哪里中两个以上还继续堆指令三个月后你自己都看不懂自己写的东西。我就因为这个问题重新写过一整套采集流程白白浪费两天。三条拆分原则按业务阶段、按复用频率、按变动频率拆子流程不是随手一切我的经验是按三个维度切。按业务阶段切登录→搜索→翻页→提取→落表→通知一个阶段一个子流程主流程只剩一条清晰的骨架按复用频率切登录、写入Excel、飞书群通知这种所有流程都要用的单独拆出来新项目直接复用按变动频率切页面改版经常要动的提取逻辑独立成子流程改它不影响别人一句话总结主流程只负责调用谁、按什么顺序调不负责具体干活。从新建子流程到调用流程四步操作影刀RPA里做这件事非常简单非技术出身也能一次上手。打开流程编辑器在左侧流程面板点击新建可视化流程给子流程起名比如02_登录在子流程里正常拖指令写逻辑写法和主流程完全一致没有任何区别回到主流程在右侧指令面板搜索调用流程拖入主流程在调用流程指令的详情面板里通过下拉选择待执行的流程或Python模块测试某个功能能不能实现时也可以先用子流程把功能独立出来单测跑通了再接回主流程这是我现在的标准做法。参数传递实战输入参数、输出参数与返回值子流程拆开之后核心问题就是数据怎么进出。规则其实就两条子流程定义了输入参数主流程调用时就必须传子流程有输出参数就要在子流程里给它赋值主流程接收后使用。举个我实际在用的例子采集子流程03_搜索采集定义两个输入参数——关键词和抓取页数主流程把Excel里读到的关键词循环传进去子流程抓完数据把商品列表通过输出参数传回主流程主流程再交给写表的子流程。编码版的写法长这样注释我标清楚了# 编码版示意采集子流程的函数签名与返回结构# 输入参数keyword搜索关键词、pages抓取页数# 输出参数返回字典主流程用 result[data] 取数据列表importxbotdefmain(args):keywordargs[keyword]# 接收主流程传来的关键词pagesargs[pages]# 接收抓取页数data[]# 存放本子流程抓到的所有商品forpageinrange(pages):# ...翻页、提取逻辑省略逐条 append 到 datapass# 返回输出参数主流程调用后从返回值里取return{data:data,total:len(data)}可视化版的操作是对应的在子流程的参数设置里添加输入参数在调用流程指令详情面板里把主流程的变量填进输入参数再勾选输出参数保存到主流程变量。参数名必须和子流程定义的一字不差这是我见过最多的传参翻车点。子流程内的元素定位捕获、XPath与CSS怎么分工子流程里写得最多的就是网页操作定位方式的选择直接决定维护成本。捕获元素点击工具栏捕获元素浏览器出现橙色边框后点击确认适合90%的常规场景XPathclass带随机哈希、或需要按文本定位时手写比如//*[contains(text(),‘共’)]这种页码提取CSS选择器结构规整的列表页很好用配合属性选择器比长XPath更稳相似元素循环有个官方文档明确提过的坑如果网页在循环中会刷新比如点同意后按钮消失要用For次数循环代替相似元素循环在循环体内重新获取相似元素列表按下标取项操作。我采集拼多多搜索结果时就是这么处理的。变量、数据类型与异常处理在子流程里的落位拆了子流程之后变量管理要跟着升级不然会出现变量在子流程里找不到的迷惑现场。变量分清楚归属主流程变量管调度数据账号、关键词列表子流程变量管过程数据网页对象、临时列表字典取不存在的键不会报错但会拿到空值判断登录态之前先用键存在性检查兜一手每个子流程内部包一层try-catchCatch块放打印日志记录错误信息Finally块放关闭网页、清理弹窗的收尾操作子流程自己兜自己的异常主流程才能安心调度这是流程能稳定挂机跑的前提。数据处理与Excel落盘子流程写Excel我永远单独拆一个子流程因为报错概率最高的指令集中在这里。官方文档里记录过几个真实的发生意外类报错我全都踩过报错指令原因解法删除Excel列一次删超过52列分批少量删除写入内容至Excel工作表xls后缀超65536行换xlsx格式删除重复行Excel窗口被最小化保持窗口打开新建透视表数据源标题行有空格去掉空格另外流程开头加一条终止程序指令清掉残留的Excel进程能避免多进程冲突这个技巧是官方文档给的实测好用。并发调用子流程多线程提速与一个必踩的坑影刀RPA有个并发调用子流程指令用多线程技术在应用运行时同时执行指定子流程。我主要用在两个场景一是主流程跑采集的同时并发一个子流程专职监控和关闭网页广告弹窗二是配合手机自动化做多台设备群控多台手机调用同一流程。并发有个必踩的坑并发子流程里如果涉及COM组件操作比如Excel会报初始化错误解法是在子流程开头加两行# 并发子流程中操作Excel等COM组件前必须先初始化importpythoncom pythoncom.CoInitialize()这是我第一次用并发时的真实报错排查了一下午就缺这两行。鼠标键盘、图像与手机自动化的边界不是所有操作都适合放进网页子流程边界要分清。鼠标键盘操作分模拟模式和驱动模式模拟模式适合调试阶段观察驱动模式后台执行更稳网页元素实在定位不到才退到图像识别配合锚点九宫格加偏移量点击。手机自动化走连接手机指令连接模式选Appium还是Uiautomator2看机型和版本需求群控场景配合并发调用子流程一起用。这些内容放在独立的工具箱子流程里主流程需要时调用平时不影响网页采集的主线。平台实战与系统联动拼多多采集加飞书通知拿我现在的拼多多采集项目举例拆完之后主流程只有七条指令读配置Excel→调用01_登录→循环调用03_搜索采集→调用04_数据清洗→调用05_写入Excel→调用06_飞书通知→输出运行报告。06_飞书通知用的是影刀RPA的飞书群通知指令填机器人webhook地址消息格式选文本类型每天采集完成自动往群里发一条汇总。挂了就发报错截图我在手机上就能知道要不要处理。平台页面会改版但因为提取逻辑全部收在03里改版时我只动这一个子流程其他五个完全不用碰——这就是拆分的全部意义。命名与调试拆分之后的工程化规范拆完子流程命名不规范会让你在调用时抓瞎。官方文档的建议是命名尽量规范比如用ABC开头调用流程的下拉列表里子流程会按顺序排列。我自己用的是两位数字前缀加下划线01_登录、02_读取配置、03_搜索采集。调试时在调用流程指令上右键打断点单步进去配合输出面板的打印日志一行行排查哪个子流程出了问题。子流程易错速查表最后把这篇的高频坑汇总成表出问题时按表排查。现象原因解法调用流程下拉里找不到子流程子流程未保存或被删保存后重开编辑器子流程收不到参数输入参数名不一致核对参数名一字不差主流程拿不到输出子流程没给输出参数赋值检查return或输出变量并发调Excel报错COM未初始化加pythoncom.CoInitialize改了子流程主流程没变化没保存子流程保存后重新运行学习资源与延伸阅读官方文档里子流程“调用流程”并发调用子流程三篇讲得很细配合影刀学院的视频课看一遍基本就会了。我把我自己这套拼多多采集的完整拆分源码放在代码仓库 home.linyan.cloud主流程、六个子流程和配置表都在里面可以直接参考改造。#影刀RPA #RPA自动化 #子流程 #流程设计 #拼多多作者林焱
阅读完成 · 觉得有帮助?
咨询建站