你是不是也有这种经历——每次接到新需求,都从零开始拖指令?登录写一遍、翻页写一遍、Excel读写写一遍、异常处理写一遍……明明80%的代码都是以前写过的,却要重新搭一遍。
我刚做影刀的时候就是这样。拼多多采集写了一个流程,淘宝采集又从头写了一个,小红书采集再写一个——三个流程长得差不多,但各是各的,改一个bug要改三遍。后来我才意识到:90%的重复劳动都源于对流程复用机制的理解不足。
当你同时维护5个以上的流程时,你不再是在“写自动化脚本”,而是在“管理一个自动化体系”。思维要从“单兵作战”切换到“系统设计”。今天就把流程模板化的完整方法论讲清楚。
为什么要做流程模板化:不做的代价
场景一:重复造轮子
每次写新流程,登录逻辑重写一遍、翻页逻辑重写一遍、Excel读写重写一遍。同样的代码写了10遍,每个流程里都有bug,但每个流程的bug还不一样。
场景二:改一个功能要改N个地方
平台登录方式变了,你有5个采集流程都要改登录逻辑。改5遍,漏一个就崩一个。
场景三:新人接手看不懂
变量名叫a、b、c,子流程叫“子流程1”“子流程2”,完全不知道当初是干什么的。
模板化的核心价值:一次编写,到处复用;一处修改,全局生效。
模板化的三个层次
流程模板化不是一蹴而就的,分三个层次,你可以根据自己的情况逐步推进:
| 层次 | 做法 | 适合阶段 | 复用程度 |
|---|
| 第一层:子流程复用 | 把公共逻辑封装成子流程,在不同主流程里调用 | 已掌握基础操作 | 中 |
| 第二层:应用模板 | 把完整应用导出为模板,新项目直接复制改参数 | 有3-5个类似项目 | 高 |
| 第三层:组件库 | 建立团队级的公共组件库,所有项目共享 | 团队协作、5+项目 | 极高 |
大多数个人开发者做到第一层和第二层就够了。团队协作才需要第三层。
第一层:子流程复用——一次编写,多处调用
这是最基础也最重要的复用方式。把公共逻辑封装成子流程,任何主流程需要的时候直接调用。
哪些东西适合封装成可复用的子流程
根据我的经验,以下这些模块几乎每个项目都会用到,值得花时间封装好:
| 子流程名称 | 功能 | 复用场景 |
|---|---|---|
A01_登录拼多多 | 账密/扫码登录 | 所有拼多多采集项目 |
A01_登录淘宝 | 账密/扫码登录 | 所有淘宝采集项目 |
F01_处理滑块验证码 | 识别并滑动验证码 | 登录、提交订单、翻页 |
D01_清洗价格数据 | 去掉¥符号、转为数字 | 所有价格数据处理 |
E01_写入Excel并保存 | 写入数据+保存+关闭 | 所有数据导出场景 |
Z01_发送企微通知 | 发送企微群消息 | 所有需要通知的场景 |
Z02_发送邮件通知 | 发送邮件带附件 | 所有需要邮件通知的场景 |
实操示例:假设你写了一个“处理滑块验证码”的子流程,在登录拼多多、登录淘宝、提交订单时都可能用到。单独建一个F01_处理滑块验证码,需要的地方调用它就行。
子流程复用的关键:参数化
子流程要能被复用,必须通过参数传递数据,而不是直接读取主流程的变量。
❌ 错误做法:子流程里直接读取主流程的变量$账号、$密码。换了项目变量名变了,子流程就用不了。
✅ 正确做法:在子流程的“流程属性”里定义输入参数账号和密码,主流程调用时把值传进来。
子流程:A01_登录拼多多
输入参数:
- $账号(字符串)

- $密码(字符串)
输出参数:
- $登录结果(布尔值)
流程体:
打开网页:https://seller.pinduoduo.com
输入文本:账号框,内容=$账号
输入文本:密码框,内容=$密码
点击登录
等待登录成功标志
$登录结果 = True
以后任何主流程需要登录拼多多,只需要一行“调用子流程”,把账号密码传进去就行。账号密码的来源可以是Excel、可以是变量、可以是任何地方——子流程不管,它只负责“用你给的账号密码登录”。
第二层:应用模板——文件夹复制法
子流程复用解决的是“模块级”的复用。如果你要做的是一个完整的新项目(比如从“拼多多商品采集”复制出一个“淘宝商品采集”) ,一个个复制子流程太慢了。
更高效的方法:直接复制整个应用的文件夹。
影刀应用的文件夹结构
理解影刀的文件夹结构,是掌握应用级复用的关键:
电商订单处理/
├── .dev/ # 开发配置
├── venv/ # Python虚拟环境
├── xbot_extensions/ # 扩展插件

├── xbot_robot/ # 机器人相关
├── imagesV2.xml # 图像识别模板
├── main.pybx # 主流程文件
├── package.json # 应用身份证(含唯一ID)
├── package.py # 包配置
├── selectorsV2.xml # 元素库(所有捕获的元素)
├── settings.json # 应用配置
└── __init__.py
三个关键文件:
package.json:包含应用的uuid(唯一标识)和namesettings.json:包含topicUuid,是流程复用的关键selectorsV2.xml:所有捕获的元素都在这里
文件夹复制法的操作步骤
第一步:找到源应用的文件夹
在影刀左侧流程树中,右键点击应用 → “打开所在文件夹”。
第二步:复制整个文件夹
把整个文件夹复制一份,重命名为新应用的名称。
第三步:修改关键文件(重要!)
如果不修改以下内容,复制出来的应用会和原应用共用元素库和配置,改一个会影响另一个。
- 打开
package.json,修改name为新应用名称 - 打开
settings.json,修改topicUuid为新值(随便改几个字符就行) - (可选) 修改
uuid为新值(如果不想和原应用有任何关联)
第四步:在影刀中导入
回到影刀客户端 → “导入应用” → 选择刚才复制并修改好的文件夹。
第五步:重新捕获元素
复制后的应用里,所有元素还是指向原应用的页面。需要在新的目标平台上重新捕获元素,更新selectorsV2.xml。
这个方法能把新流程开发时间从2小时压缩到15分钟。我团队现在所有新项目都是这样起步的——复制一个最接近的模板,然后改参数、换元素、微调逻辑。
第三层:组件库(团队级)
如果你在一个团队里做RPA开发,多个成员都在写流程,每个人都在重复造轮子——那就需要建立团队级的组件库了。
组件库的搭建思路
核心做法:把所有可复用的子流程集中存放在一个“公共组件库”应用里,所有成员从这个应用里复制子流程到自己的项目。
目录结构:
公共组件库/
├── A_登录模块/
│ ├── A01_登录拼多多
│ ├── A02_登录淘宝
│ └── A03_登录小红书
├── B_采集模块/
│ ├── B01_翻页采集模板
│ └── B02_相似元素遍历模板
├── C_数据处理/
│ ├── C01_价格清洗
│ └── C02_日期格式化
├── D_输出模块/
│ ├── D01_写入Excel
│ ├── D02_发送企微通知
│ └── D03_发送邮件
└── E_异常处理/
├── E01_重试机制
└── E02_错误截图保存
组件库的维护规范
- 版本管理:每个子流程在注释里写清楚版本号和更新日期
- 变更通知:修改了公共组件后,在团队群里通知所有人
- 向下兼容:修改组件时尽量保持输入输出参数不变,避免影响已有项目
常量集中管理:让模板改起来更省事
模板化之后还有一个问题——同一个常量(比如Excel文件路径、飞书Webhook地址)在多个子流程里出现,改起来要改好几个地方。
解决方案:在主流程最前面集中定义所有常量。
# 主流程开头——常量集中管理
设置变量:$Excel路径 = “C:\采集数据\商品列表.xlsx”
设置变量:$飞书Webhook = “https://open.feishu.cn/...”
设置变量:$最大翻页数 = 50
设置变量:$超时时间 = 10
所有子流程通过参数传递获取这些常量,而不是直接写死。以后要改路径,只改主流程开头这一处。
命名规范:模板化的基础
模板化做得再好,命名不规范一样没法复用——你根本不知道这个子流程是干什么的、那个变量存的是什么。
应用命名
[平台]_[业务]_[版本号]
拼多多_商品价格监控_V2.3
淘宝_自动上架_V1.0
小红书_达人数据采集_每日版
子流程命名
[字母前缀][两位数字]_[功能描述]
| 前缀 | 含义 | 示例 |
|---|---|---|
| A | 初始化 | A01_登录拼多多 |
| B | 批量采集 | B01_翻页采集控制器 |
| C | 单页解析 | C01_解析商品卡片 |
| D | 数据处理 | D01_清洗价格销量 |
| E | 输出与通知 | E01_写入Excel |
| F | 异常处理 | F01_验证码处理 |
| Z | 测试专用 | Z01_测试单个商品 |
变量命名
[类型]_[用途]
$lst_商品列表 # 列表
$num_当前页码 # 数字
$str_商品名称 # 字符串
$bln_是否登录 # 布尔
$dict_商品信息 # 字典
元素命名
[页面]_[功能]_[类型]
首页_搜索框_输入框
搜索结果页_商品卡片_父容器
详情页_价格_文本
从复制粘贴到自动化体系:思维转变
模板化的最终目标不是“少写几行代码”,而是建立一套可持续扩展的自动化体系。
| 阶段 | 特征 | 维护成本 |
|---|---|---|
| 复制粘贴阶段 | 每个流程独立,改bug改N遍 | 极高 |
| 子流程复用阶段 | 公共逻辑封装成子流程 | 中 |
| 应用模板阶段 | 新项目从模板复制 | 低 |
| 组件库阶段 | 团队共享组件,标准化开发 | 极低 |
我的建议:不用一上来就追求“完美模板”。先从子流程复用开始——下次写新流程的时候,看看有没有已经写好的子流程可以直接调用。慢慢积累,你的“模板库”会越来越大,新流程的开发速度会越来越快。
常见问题速查
| 问题现象 | 根本原因 | 修复方法 |
|---|---|---|
| 复制应用后元素全部失效 | 未重新捕获元素 | 在新页面上重新捕获所有元素 |
| 改了子流程但调用它的流程没生效 | 子流程被缓存了 | 关闭所有引用该子流程的流程,重新打开 |
| 子流程在不同项目里报“变量未定义” | 子流程直接读取了主流程变量 | 改用参数传递,所有数据通过输入参数传入 |
| 两个应用互相影响(改一个另一个也变了) | 复制时没改topicUuid | 修改settings.json中的topicUuid为新值 |
| 子流程太多找不到想要的 | 命名不规范 | 用ABCD编号法重新命名 |
推荐资源
- 影刀官方帮助文档搜索“子流程”或“参数传递”
- 影刀社区搜索“流程复用”或“模板化”,有大量实战案例分享
- 影刀开发者社区搜索“开发规范”,有完整的命名规范参考
#影刀RPA #RPA自动化 #流程模板化 #子流程设计 #开发规范 #电商自动化
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。如果这篇文章对你有帮助,欢迎点赞收藏,下一篇我们聊“综合实战:从0到1搭建一个完整的日报自动化系统”。
