影刀RPA新手教程:子流程参数传递完全指南——怎么把数据传进去,把结果传出来
小刘做了个商品价格监控流程。淘宝、京东、拼多多,每个平台都是一个子流程,主流程里依次调用。
但他遇到一个问题:想让每个子流程自动去查不同的商品,而不是写死在流程里。比如今天查"蓝牙耳机",明天查"充电宝",每次要手动改子流程里的搜索关键词。
"参数传进去就行了。"我说。
“参数?怎么传?”
安装与配置:参数在哪里配置
每个子流程都有两个参数配置区:输入参数和输出参数。
输入参数是"别人给你的"——调用方传给子流程。
输出参数是"你给别人的"——子流程返回给调用方。

在子流程的属性面板最上方,有输入参数和输出参数两个标签页。点"添加参数",填写参数名、参数类型、默认值。
输入参数的类型有:字符串、数字、布尔值、列表、字典。类型要匹配,传字符串的地方不能传数字。
我吃过类型不匹配的亏:传了一个数字123当搜索关键词,影刀自动转成了字符串"123",结果搜索"123"搜不到东西,调试了半小时才发现。
变量与数据类型:传数字还是传字符串
先来说清楚数据类型。影刀支持的参数类型有5种:
字符串:文本类型,比如"蓝牙耳机"、“https://www.taobao.com”
数字:整数或小数,比如100、3.14
布尔值:True或False,一个表示"是/否"的值
列表:一组数据的集合,比如[“耳机”,“充电宝”,“数据线”]
字典:带标签的键值对,比如{“name”:“耳机”,“price”:99}
参数类型必须精确对应。在子流程的输入参数配置里,类型选了"字符串",调用方传进来的值就应该是引号括起来的文本。
案例主线:商品价格查询子流程
我们的目标是做一个通用子流程,接收商品URL,返回商品价格。
主流程用的时候:

- 传入:https://item.taobao.com/item.htm?id=123456
- 返回:149.00
换成另一个商品也能用,不需要改动子流程任何代码。
设置输入参数
打开子流程属性面板,在输入参数标签页点"添加参数"。
拼多多店群自动化报活动上架!
参数名:product_url
参数类型:字符串
默认值:空(留空或者填一个测试用的URL)
参数描述:要查询价格的商品页面URL
参数名称很重要!这是你以后在子流程里使用和外部调用时要引用的名字。命名规范:全小写英文+下划线,见名知义。product_url、user_email、start_date这样。
在子流程里使用输入参数
参数设好后,在子流程的指令节点里就能用了。
比如"打开网页"指令,URL参数填:product_url。影刀会自动取输入的参数值。注意,这里填的是参数名,不是具体的网址。

打开网页 -> product_url
子流程运行时,传入的是淘宝商品A的链接,它就打开商品A。传入的是京东商品B的链接,它就打开商品B。
这就是参数化的核心好处:同一段代码,不同输入产生不同结果。
网页自动化:根据URL打开商品并提取价格
商品页面打开后,等价格元素出现,然后用XPath提取价格文字。
等页面加载:等待元素出现 -> XPath: //span[@class=“price”]
提取价格:获取元素文本 -> 用同样的XPath,结果保存到price_text变量。
price_text可能是"¥149.00",需要清洗:去掉¥符号,转换成数字。
用Python指令处理更简单:

price_text = GetVar("price_text")
price = float(price_text.replace("¥", "").replace(",", ""))
SetVar("price_clean", price)
float()是把文字转成数字的函数。replace替换¥和逗号,得到纯数字字符串,再转成数字类型。
设置输出参数
价格取到了,现在返回给主流程。
在子流程属性面板的输出参数标签页,添加参数:
参数名:product_price
参数类型:数字
参数描述:商品的价格,单位元
在子流程最后一步,用"设置变量"指令,把计算好的price_clean赋值给product_price。
注意:product_price是输出参数变量,它是一个特殊的变量,子流程执行完后会把这个值传回主流程。
XPath与CSS选择器:提取不同网站的通用做法

淘宝、京东、拼多多的价格元素XPath肯定不一样。怎么让子流程通用?
方案一:输入参数不只传URL,还传XPath。
输入参数多加一个:price_xpath。主流程在调用时一起传入。
打开网页 -> product_url
等待元素出现 -> price_xpath
获取元素文本 -> price_xpath -> 保存到price_text
每个平台的调用方传递不同的XPath:
- 淘宝://span[@class=“price”]
- 京东://span[@class=“p-price”]/span
- 拼多多://div[@class=“price-box”]/span
方案二:子流程内部用If判断自动匹配。
获取当前网页域名 -> domain
如果 domain 包含 "taobao":用淘宝的XPath
如果 domain 包含 "jd":用京东的XPath
如果 domain 包含 "pinduoduo":用拼多多的XPath
方案一更灵活,方案二更方便(调用方不用管XPath细节)。实际选哪个看场景。

流程控制:在主流程里调用并使用返回值
主流程调用子流程的配置:
- 选中指令:“调用子流程”
- 选择子流程:“子流程_获取商品价格”
- 输入参数product_url:填入变量taobao_url(值为具体商品链接)
- 输出参数product_price:保存到变量taobao_price
调用完成后,taobao_price变量里就是商品的价格了。接下来可以用If判断:
如果 taobao_price < 100:
日志输出"价格低于100元,值得买"
写入Excel标注"可入手"
数据处理:一次传多个参数
有些子流程需要多个输入。比如不只是查价格,还要查库存、评分。
输入参数可以加多个:
- product_url:商品URL
- extract_fields:要提取的字段列表[“price”, “stock”, “rating”]

在子流程里用ForEach循环遍历extract_fields:
ForEach field in extract_fields:
如果 field == "price":提取价格
如果 field == "stock":提取库存
[video(video-yq6uxu8B-1782670859992)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]
如果 field == "rating":提取评分
输出参数也可以是一个字典,把多个返回值打包在一起:
result = {
"price": 149.00,
"stock": 328,
"rating": 4.8
}
SetVar("product_info", result)
进阶技能:参数校验
输入参数不一定合法。URL可能是空字符串,或者格式不对。
在子流程开头加校验:
如果 product_url 是空 或者 product_url 不包含"http":
日志输出"无效的URL"
设置输出参数为错误码
直接结束子流程
用"结束流程"指令提前退出子流程。这样主流程能收到一个明确的错误信号,而不是执行到一半报一个莫名其妙的错。
系统联动:价格低于阈值时发通知

价格查出来了,如果低于目标价格,发飞书通知。
主流程里调用子流程获取价格后:
如果 product_price <= target_price:
调用子流程_发飞书通知
输入参数:
message = "商品" + product_name + "当前价格" + to_string(product_price) + "元,低于目标价" + to_string(target_price) + "元"
飞书通知子流程接收一个message字符串做输入参数,内部调用飞书Webhook。具体的Webhook配置可以在home.linyan.cloud上找到模板。
工程化规范
参数命名规范很重要。子流程多了之后,参数名一乱,调用的时候就分不清。
推荐命名规则:
- 输入参数用英文小写+下划线,语义清晰
- product_url、target_price、extract_fields、timeout_ms
- 注意加上单位提示,比如timeout_ms(单位毫秒),避免第一个人写秒第二个人写毫秒
参数描述一定要填。影刀支持在参数配置里写描述文字,将来调用时会显示在下拉提示中。

常见报错与解决
“参数类型不匹配”:传字符串给数字参数,或者反过来。严格按参数定义的类型传值。
“输出参数未赋值”:子流程执行完了但输出参数还是默认值。检查子流程内部有没有"设置变量"指令给输出参数赋值。
“参数未传递”:主流程调用子流程时,某个输入参数忘了填值。检查调用配置,确保所有参数都设了。
#影刀RPA #RPA教程 #影刀新手教程 #子流程 #参数传递 #流程封装 #RPA开发
作者:林焱

348

被折叠的 条评论
为什么被折叠?



