4、RPA基础组件:选择器、变量、参数、控制流
好,咱们进入正题。这一章讲的是RPA的「四肢」和「大脑」。你想想看,一个机器人要干活,总得知道「抓哪里」、「存什么」、「怎么走」吧?选择器、变量、参数、控制流,就是干这个的。
我刚开始带团队做RPA项目时,发现很多新人把精力全花在录流程上,结果一换环境就崩。为什么?因为没搞懂这几个基础组件。说白了,它们是RPA的骨架,骨架歪了,皮肉再好看也没用。
4.1 选择器:告诉机器人「抓哪里」
选择器,就是RPA的眼睛。它帮机器人定位界面上的元素——按钮、输入框、表格、下拉菜单,全靠它。
我个人习惯把选择器分成两类:静态选择器和动态选择器。
4.1.1 静态选择器
这种最简单。元素有固定的ID、Name、Class,直接写死就行。比如:
<html>
<button id="submitBtn" class="btn-primary">提交</button>
</html>
选择器可以写成:
id='submitBtn'
或者:
class='btn-primary'
嗯,这里要注意:优先用ID。ID是唯一的,最稳定。Class可能多个元素共用,容易抓错。
4.1.2 动态选择器
现实世界没这么美好。很多系统的ID是动态生成的,比如:
id='btn_20240515_001'
第二天可能就变成:
id='btn_20240516_002'
怎么办?用通配符和正则表达式。我在项目中遇到过这种情况:一个ERP系统的订单列表,每行的「编辑」按钮ID都带时间戳。我当时的做法是:
id='btn_*'
或者更精确一点:
id~='btn_'
这表示「包含btn_即可」。你想想看,如果不这么处理,每天都要改选择器,那还叫自动化吗?
4.2 变量:告诉机器人「存什么」
变量就是RPA的便签纸。抓到的数据、计算的结果、判断的条件,都得存起来。
我建议你记住一个原则:变量名要见名知意。别用a、b、c这种,三个月后你自己都看不懂。
| 变量名 | 含义 | 示例值 |
|---|---|---|
| customerName | 客户姓名 | 张三 |
| orderAmount | 订单金额 | 1580.00 |
| isApproved | 是否审批通过 | True |
| emailList | 邮箱列表 | ["a@b.com", "c@d.com"] |
变量类型也很重要。字符串、数字、布尔值、数组、字典……用错了会报错。我记得有一次,同事把数字存成了字符串,结果做加法时变成了拼接——「100」+「200」=「100200」,而不是300。这种坑,踩过一次就记住了。
4.3 参数:告诉机器人「怎么传」
参数和变量很像,但用途不同。参数是用来跨流程传递数据的。
你想想看,一个完整的RPA项目,不可能只有一个流程。比如:
- 流程A:从Excel读取客户名单
- 流程B:登录CRM系统查询客户信息
- 流程C:把结果写回Excel
这三个流程之间怎么传数据?靠参数。
我个人习惯把参数分成三类:
- 输入参数:调用时传入的数据。比如客户ID、日期范围。
- 输出参数:流程执行完返回的数据。比如查询结果、状态码。
- 输入输出参数:既能传进去,又能带出来。比如一个数据集合,进去时是空的,出来时填满了。
举个例子:
// 流程:查询客户信息
// 输入参数:customerId (String)
// 输出参数:customerInfo (Dictionary)
// 伪代码
Function QueryCustomer(customerId):
OpenCRM()
SearchByID(customerId)
info = GetCustomerInfo()
Return info
嗯,这里要注意:参数命名要统一规范。我见过一个项目,有的用驼峰(customerId),有的用下划线(customer_id),有的用拼音(kehuID)。维护起来简直灾难。
4.4 控制流:告诉机器人「怎么走」
控制流是RPA的大脑。它决定了流程的执行顺序。RPA里常见的控制流有三种:Sequence、Flowchart、State Machine。
4.4.1 Sequence(序列)
最简单,也最常用。从上到下,一步一步执行。适合线性流程,比如:
- 打开Excel
- 读取数据
- 登录系统
- 填写表单
- 保存截图
我建议新手先从Sequence入手。它直观、好调试。但别滥用——如果流程有分支、有循环,Sequence会变得又长又乱。
4.4.2 Flowchart(流程图)
Flowchart用图形化的方式展示流程。有判断、有分支、有循环。适合复杂逻辑。
举个例子:
开始 → 读取订单
↓
判断金额 > 1000?
/ \
是 否
↓ ↓
高级审批 自动通过
↓ ↓
结束 ←——————┘
我在项目中遇到过这种情况:一个客户审批流程,有7个判断条件、3个并行分支。用Sequence写出来200多行,调试时眼睛都看花了。后来改成Flowchart,一目了然。
4.4.3 State Machine(状态机)
这个稍微高级一点。State Machine适合状态变化频繁的场景。比如:
- 订单状态:待支付 → 已支付 → 已发货 → 已签收 → 已完成
- 审批状态:待审批 → 审批中 → 已通过 / 已驳回
State Machine的核心是:定义状态、定义状态之间的转换条件。机器人根据当前状态和触发条件,自动跳转到下一个状态。
我记得有一次做CRM客户跟进自动化。客户状态有「新客户」、「跟进中」、「意向客户」、「已成交」、「已流失」。每个状态之间的转换条件都不一样。用Sequence写?累死。用Flowchart?画出来像蜘蛛网。最后用了State Machine,清爽多了。
4.5 四个组件怎么配合?
好,咱们把四个组件串起来,看看它们怎么一起工作。
假设我们要做一个「自动录入客户信息」的流程:
- 选择器定位到CRM系统的「客户名称」输入框
- 变量customerName存着从Excel读到的客户名
- 参数把customerName从主流程传到子流程
- 控制流判断:如果客户名不为空,就填入;如果为空,就跳过并记录日志
你想想看,这四个组件缺一个,流程就跑不起来。选择器抓不到元素,变量没存数据,参数传不过去,控制流不知道怎么走——任何一个环节出问题,自动化就崩了。
好了,这一章就到这里。下一章咱们聊聊「异常处理」——机器人也会犯错,关键是怎么让它犯错后还能自己爬起来。