影刀RPA新手教程:子流程是什么完全指南——把重复的步骤打包成一个工具
我刚开始用影刀的时候,最受不了的是复制粘贴。
比如同一个"登录网站"的操作,在3个不同的流程里都要用到。我傻傻地在每个流程里都重写了一遍——打开浏览器、输入账号、输入密码、点击登录。
后来有一天改密码了,3个流程全报错,我一个一个去改,改完第三个的时候差点崩溃。同事问我:“你为什么不把登录做成一个子流程?”
“子流程是啥?”
“就是把重复的工作打包成一个工具,以后直接拿来用。”
安装与配置
子流程不用安装。它是影刀RPA项目结构的一部分,每个流程文件(.flow文件)就是一个大流程容器,里面可以放主流程和多个子流程。
在影刀左侧的项目管理面板,右键点项目名,选"新建子流程",输入名字,一个空的子流程画布就出来了。
一个项目里可以有无限制的子流程。每个子流程都是独立的画布,可以单独打开编辑,也可以单独运行测试。
变量与数据类型:主流程和子流程互不相通
这是新手最容易踩的坑:以为主流程里创建的变量,子流程里能直接用。
错!主流程和子流程是两块独立的领地。主流程里的变量a,子流程里看不见。子流程里的变量b,主流程里也看不见。
想让子流程用主流程的数据,需要通过"输入参数"传进去。想让主流程拿到子流程的结果,需要通过"输出参数"传出来。
就好比你让同事帮忙办一件事,得把需要的材料(输入参数)交给他,他办完后把结果(输出参数)还给你。你不能直接翻他的抽屉找东西。
什么是子流程,用生活例子讲清楚
子流程就是你自定义的一个工具函数。
店群矩阵自动化突破运营极限!
你在厨房做饭,有一个电饭煲。你把米和水放进去(输入参数),按个按钮,过一会儿香喷喷的米饭出来(输出参数)。你不用关心电饭煲里面怎么煮的,你只管用。
子流程就是你自己造的"电饭煲"。把重复的操作逻辑封装进去,以后只关心"放什么进去"和"出来什么结果"。
影刀官方对子流程的描述:子流程内指令的编写,与主流程的编写方法完全一致。就是说写子流程跟写主流程一样,没有新语法要学。
网页自动化:把"登录"做成子流程
以"登录淘宝"为例。登录步骤是固定的:
- 打开淘宝登录页
- 等待登录页加载
- 输入用户名
- 输入密码
- 点击登录按钮
- 等待登录完成(等首页图标出现)
这6步在主流程里至少要6个指令节点。如果有5个流程都要登录,就是30个节点,改一个地方就要改5个地方。
做成子流程后,每个主流程只需要1个节点:调用子流程"登录淘宝"。
这就是子流程的核心价值:写一次,到处用。
XPath与CSS:子流程里照样用
子流程里的元素定位,和主流程一模一样。用XPath能找到的元素,在子流程里同样能用。
比如登录页的密码输入框,在子流程里写CSS选择器:input[type=“password”]。
XPath写法://input[@type=“password”]。
两种方式都可以,看哪个更稳定就用哪个。我一般优先用CSS选择器,因为读起来更直观。
流程控制:有返回值才叫工具
纯操作的子流程不需要输出参数。但如果你希望子流程做完后告诉你"成功了还是失败了",就需要一个输出参数。
比如登录子流程,输出一个布尔值(True或False):
- True:登录成功
- False:登录失败(可能是网络问题或密码错误)
在主流程里用If判断:
调用子流程"登录淘宝" -> 保存结果到login_result 如果 login_result 等于 True: 继续后续操作 否则: 日志输出"登录失败,跳过本次任务"这种设计叫"有错误不中断,优雅地跳过"。生产环境里非常重要。
数据处理:子流程之间的数据流转
子流程之间也可以互相调用。子流程A可以调用子流程B。
比如子流程"登录"内部,又调用了一个子流程"验证码识别"。主流程调用登录,登录内部调用识别验证码。一层一层嵌套,但逻辑很清晰。
不过一个细节要注意:子流程之间调用也需要注意参数的传递。如果子流程A调用子流程B,A需要给B传数据,B需要给A返回数据。
影刀的流程参数传递规则是:调用方给被调用方传输入参数,被调用方给调用方返回输出参数。
进阶技能:什么时候应该做子流程
经验规则:一个操作出现2次以上,就该做成子流程。
哪怕你现在只用了一次,如果将来很可能再用,也做。我吃过不做子流程的亏——当时偷懒想着"就用一次",结果两个月后需求变了,用了7次,改得直想哭。
还有一个信号:一个流程的节点超过20个,就应该拆分子流程。人一次能理解的节点有限,20个以内能搞懂,超过20个就开始晕了。
平台实战:从登录开始
以登录网站为案例,3步走:
第一步:创建子流程
右键项目名 -> 新建子流程 -> 命名为"子流程_登录淘宝" -> 确定
temu店群自动化报活动案例
第二步:在子流程画布上编写登录逻辑
拖入打开网页、等待元素、输入文本、点击元素等指令,和写普通流程一样
第三步:在主流程里调用
拖入"调用子流程"指令 -> 选中"子流程_登录淘宝" -> 配置输入输出参数
运行主流程,子流程被调用时自动执行登录逻辑。
鼠标键盘与图像:子流程内的操作
如果登录后有验证码滑块的场景,子流程里也可以包含图像操作。
比如淘宝登录后弹出滑块验证,在子流程里加入"等待图片出现"指令等待滑块出现,"图像拖拽"指令拖动滑块。
流程设计:登录子流程不处理验证码?可以。再做一个"子流程_处理滑块验证",登录子流程里调用它。这就是子流程的分层思想。
系统联动:子流程库的建设
随着做的流程越来越多,你会积累自己的子流程库:登录淘宝、登录京东、发飞书通知、读Excel文件、正则提取手机号……
建议在项目里建一个专门的子流程组,文件夹命名"通用工具"、“电商登录”、"数据处理"等,方便查找。
我之前做的一个电商数据采集项目,64个主流程,复用了28个子流程。新加一个采集流程,基本上拖3个子流程就能搞定。像搭积木一样。这个思路在home.linyan.cloud的RPA架构设计文章里有更详细的说明。
工程化规范
子流程命名规范:
- 以"子流程_"开头,一眼认出是子流程
- 用动词+名词格式:登录、发通知、提取数据
- 例:子流程_登录淘宝、子流程_提取手机号、子流程_发飞书通知
注释要做好:每个子流程的开头多加一个"日志输出"节点,写上这个子流程的功能描述。别人(包括三个月后的你自己)打开一个子流程,第一眼就知道它是干嘛的。
常见报错与解决
“未找到子流程”:检查子流程文件名是否正确,大小写是否一致。影刀对大小写敏感。
“子流程未设置输出参数”:如果你想获取子流程的返回值,但子流程里没有配置输出参数,就会报错。在子流程的属性面板添加输出参数。
“参数类型不匹配”:主流程传的参数类型,和子流程接收的类型不一致。比如主流程传的是数字123,子流程期望接收的是字符串"123"。统一类型就好了。
#影刀RPA #RPA教程 #影刀新手教程 #子流程 #流程封装 #自动化设计 #影刀进阶
作者:林焱