影刀RPA新手教程子流程参数传递完全指南——怎么把数据传进去把结果传出来小刘做了个商品价格监控流程。淘宝、京东、拼多多每个平台都是一个子流程主流程里依次调用。但他遇到一个问题想让每个子流程自动去查不同的商品而不是写死在流程里。比如今天查蓝牙耳机明天查充电宝每次要手动改子流程里的搜索关键词。参数传进去就行了。我说。“参数怎么传”安装与配置参数在哪里配置每个子流程都有两个参数配置区输入参数和输出参数。输入参数是别人给你的——调用方传给子流程。输出参数是你给别人的——子流程返回给调用方。在子流程的属性面板最上方有输入参数和输出参数两个标签页。点添加参数填写参数名、参数类型、默认值。输入参数的类型有字符串、数字、布尔值、列表、字典。类型要匹配传字符串的地方不能传数字。我吃过类型不匹配的亏传了一个数字123当搜索关键词影刀自动转成了字符串123结果搜索123搜不到东西调试了半小时才发现。变量与数据类型传数字还是传字符串先来说清楚数据类型。影刀支持的参数类型有5种字符串文本类型比如蓝牙耳机、“https://www.taobao.com”数字整数或小数比如100、3.14布尔值True或False一个表示是/否的值列表一组数据的集合比如[“耳机”,“充电宝”,“数据线”]字典带标签的键值对比如{“name”:“耳机”,“price”:99}参数类型必须精确对应。在子流程的输入参数配置里类型选了字符串调用方传进来的值就应该是引号括起来的文本。案例主线商品价格查询子流程我们的目标是做一个通用子流程接收商品URL返回商品价格。主流程用的时候传入https://item.taobao.com/item.htm?id123456返回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_textGetVar(price_text)pricefloat(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商品URLextract_fields要提取的字段列表[“price”, “stock”, “rating”]在子流程里用ForEach循环遍历extract_fieldsForEach 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开发作者林焱