影刀RPA新手教程:子流程参数传递完全指南——怎么把数据传进去,把结果传出来

影刀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开发

作者:林焱
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值