影刀RPA新手教程:中小企业老板入门完全指南——用RPA节省人力的5个最值得做的场景

我第一次帮企业老板做RPA项目,是帮一个做电商的朋友处理订单。

他请了一个人,每天手动把淘宝、拼多多、抖音三个平台的订单复制到Excel里,再导入ERP。每天两小时,一个月就是60个小时,相当于花了一个人的1/3工资做无效劳动。

我用影刀RPA帮他把这个流程自动化了,现在每天自动跑,不需要人工干预。他算了一笔账:请一个人做这个事,一年成本6万;用RPA,一次性投入5000块,之后每年几光伏运维成本。ROI是明显的。

这篇文章围绕"企业订单自动汇总"这个真实案例展开,同时覆盖中小企业最值得做的5个RPA场景。

一、安装与准备:老板要看的是结果

老板不关心你怎么装软件,关心的是"这个东西能帮我省多少钱"。但作为实施者,环境还是要搭好。

影刀RPA社区版免费,但企业用建议上创业版或者企业版,有技术支持,出问题有人管。

我建议企业部署RPA的时候,专门准备一台电脑当"机器人电脑",不关机,专门跑流程。这样不影响员工正常工作,流程也能24小时跑。

在这里插入图片描述

安装完成后,先在机器人电脑上把需要自动化的系统都登录好(保持Cookie),这样流程跑的时候不用反复登录。

界面介绍给老板看的时候,直接演示一个完整的流程运行,比讲任何概念都有用。老板看到浏览器自己动起来,订单自己进Excel,立刻就能理解RPA的价值。

二、元素定位四合一:企业系统的特殊挑战

企业用的系统,比互联网平台难搞。ERP、CRM、OA,大多是十年前的技术栈,页面结构乱,元素定位经常失效。

元素捕获在老系统上经常失败。这时候要用XPath或者CSS选择器手动写。

XPath在企业系统上的常用写法:

//input[@name='order_id']               ← 按name定位,老系统常用name
//table[@id='order_table']//tr         ← 定位订单表格的所有行
//button[contains(text(),'导出')]        ← 按文字定位导出按钮
//select[@id='status']/option[@value]   ← 下拉框选项
//div[contains(@class,'order')]        ← class包含order的元素
//a[contains(@href,'export')]          ← 链接包含export的

CSS选择器在企业系统上更稳:

input[name='order_id']                    ← name选择器
#order_table tr                           ← 订单表格所有行
button:contains('导出')                   ← 包含"导出"的按钮
select#status option                       ← 状态下拉框选项

正则表达式用来处理老系统的混乱输出。有些系统导出的数据格式不统一,用正则清洗:

在这里插入图片描述

订单号[::]\s*(\w+)                  ← 提取订单号
金额[::]\s*(\d+\.?\d*)            ← 提取金额

我当时踩过的坑:企业的ERP系统用的是框架页(frame),不是说iframe,是真的frame标签。影刀捕获不到frame里的内容,要先用"切换到frame"指令,才能操作frame里的元素。

三、变量与数据类型:企业数据要准确

企业数据容不得错。订单金额错一位数,就是真金白银的损失。

数字类型存金额、数量,一定要用浮点数(带小数点),不能用整数。不然199.9会变成199,差一块钱。

# 金额计算要用浮点数
price = 199.99
quantity = 3
total = price * quantity  # 599.97,正确

字符串用来存订单号、客户名、商品名。订单号经常是字母数字混合,必须存成字符串。

拼多多店群自动化上架方案

列表用来存一批订单。从淘宝抓到的订单先存在列表里,统一写入ERP。

字典用来存单条订单的完整信息,结构化清晰:

在这里插入图片描述

order = {
    "order_id": "TB20240315001",
    "customer": "张三",
    "product": "iPhone15 Pro",
    "amount": 5999.00,
    "platform": "淘宝"
}

JSON处理在对接企业API的时候用到。现在很多ERP都有开放接口,比模拟网页操作稳定。

我当时踩过的坑:订单金额有时候是字符串"5999.00",直接做乘法会报错。要先转成浮点数float(“5999.00”)再做计算。

四、流程控制:企业流程要有容错

企业场景下的流程,容错比速度更重要。一个订单处理错了,比处理慢了更要命。

If条件判断用来做数据校验:订单号格式对吗?金额大于0吗?这些校验步骤一定要有。

order_id = "TB20240315001"
if len(order_id) >= 10 and order_id.startswith("TB"):
    print("订单号格式正确")
else:
    print("订单号格式错误,跳过")

循环用来批量处理订单。四个循环都要会:

For次数循环:知道今天有多少订单,循环对应次数。

ForEach列表循环:有一批订单数据,逐个处理。

在这里插入图片描述

While条件循环:不知道有多少新订单,循环检查有没有新订单,有就处理。

相似元素循环:订单列表页面,每一行是一个订单,用相似元素循环逐个处理。

Try-Catch在企业场景是必须的。网络断了、ERP卡了、弹窗出来了——这些都要优雅处理,不能让流程直接崩掉,更不能让数据处理到一半断了。

我当时没加Try-Catch,流程在写入ERP到一半的时候网络断了,导致一部分订单写了进去,一部分没写。后来对账对了一个下午。

五、网页自动化:企业系统的特殊问题

企业系统的网页自动化,比互联网平台难。这一节讲实战经验。

等待策略:企业系统响应慢,等待时间要设长一点。我一般设10秒,不行就15秒。省这几秒没意义,流程稳才重要。

弹窗处理:企业系统经常弹"确认保存吗?"之类的确认框。5步标准流程之前写过,核心是用Try-Catch包住操作,Catch里处理弹窗。

翻页处理:ERP系统的订单列表经常有翻页,用While循环判断"下一页"是否可用来控制翻页。

懒加载:有些ERP系统也是滚动加载的,处理方案和之前一样。

在这里插入图片描述

iframe/frame处理:企业系统大量使用iframe和frame,必须先切换进去才能操作里面的元素。

窗口切换:有些ERP操作会弹新窗口(比如查看订单详情),要切换到新窗口操作完再切回来。

我踩过最恶心的坑:某ERP系统的保存按钮,点了之后没有马上保存,要等3秒才保存完。我没加等待,导致后面步骤读到的数据还是旧的。后来在每个保存操作后面都加了5秒等待,稳了。

六、数据处理:企业数据的准确处理

企业数据处理,准确性第一,速度第二。

Excel读写:订单数据经常要从Excel导入ERP,或者从ERP导出Excel。批量处理用ForEach循环遍历文件。

import pandas as pd
import os

# 批量读取订单Excel文件
orders = []
for file in os.listdir("./orders"):
    if file.endswith(".xlsx"):
        df = pd.read_excel("./orders/" + file)
        orders.extend(df.to_dict("records"))

文本提取与清洗:企业系统导出的数据经常有乱码、多余空格、不可见字符。写入之前要清洗。

import re
order_id = " TB20240315001 "  # 有空格
order_id = order_id.strip()    # 去掉首尾空格
# 去掉不可见字符
order_id = re.sub(r'[\x00-\x1F\x7F]', '', order_id)

JSON解析:对接ERP API的时候,返回的数据是JSON格式,要解析后提取字段写入ERP。

在这里插入图片描述

数据库连接:企业数据建议存在数据库里,方便查询和对账。MySQL或者SQL Server都可以。

五个常见报错:

  1. 连接超时——企业内网有时候慢,加热重试
  2. 中文乱码——连接串加charset=utf8mb4(MySQL)或者charset=GBK(老系统)
  3. 字段类型不匹配——ERP系统的字段类型经常很严格,要做类型转换
  4. 批量插入失败——用executemany,失败后要回滚
  5. 连接没关闭——用完必须关闭,不然连接池耗尽后所有操作都失败

七、鼠标键盘图像自动化:企业老系统的救命稻草

企业里有很多老系统,不是网页版的,是桌面客户端(甚至是基于IE的ActiveX控件)。这些系统网页自动化搞不定,要用鼠标键盘模拟。

模拟模式和驱动模式:企业内网环境一般不考虑反爬,用模拟模式就行,速度快。

图像识别在企业场景非常有用。有些老系统的界面是用VB6或者Delphi做的,网页元素捕获完全无效,只能用图像识别。

# 图像识别点击"保存"按钮
# 老系统的保存按钮抓不到,截屏存为 save_btn.png
wait_image_appear("save_btn.png", timeout=10)
click_image("save_btn.png", anchor="中心")

我当时做了一个用友ERP的自动化,界面是Java Swing做的,任何网页自动化工具都搞不定。最后用图像识别+键盘快捷键完成了整个流程。

锚点9位置+偏移:老系统的按钮有时候点中心没反应(比如保存按钮左边是图标右边是文字,点文字才触发),用偏移调整点击位置。

在这里插入图片描述

八、进阶技能:企业级自动化的关键

HTTP请求对接企业API。现在的主流ERP(用友、金蝶、SAP)都有开放API,直接调API比模拟操作稳定10倍。

import requests
# 金蝶云星空API示例(伪代码)
url = "https://api.kingdee.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save"
data = {
    "FormId": "SAL_SaleOrder",
    "Data": json.dumps(order_data)
}
resp = requests.post(url, json=data, headers=headers)

Python协同做复杂数据处理。企业的数据经常要做复杂转换(比如按客户汇总、按商品分类统计),用Python的pandas处理比在影刀里用指令快得多。

import pandas as pd
df = pd.read_excel("订单.xlsx")
# 按客户汇总金额
summary = df.groupby("客户")["金额"].sum().reset_index()
summary.to_excel("客户汇总.xlsx", index=False)

OCR文字识别用来处理企业里的扫描版单据。发票、合同、入库单,经常是扫描件,要用OCR把文字识别出来再录入系统。

ADB手机自动化:企业微信里的审批、打卡,有些要在手机上操作,用ADB控制手机做自动化。

九、平台实战:5个最值得做的企业场景

场景一:多平台订单自动汇总。淘宝、拼多多、抖音、快手,订单自动抓,自动写入Excel或者ERP。这是我做过最多的企业RPA项目,ROI最明显。

TEMU店群如何管理运营?

在这里插入图片描述

场景二:财务对账自动化。银行流水、支付平台流水、ERP里的收款记录,三方能自动对账,找出差异。

场景三:客户跟进提醒。CRM系统里的客户,多久没跟进了?自动检查,超过7天没跟进的,自动发飞书提醒销售。

场景四:库存预警。ERP里的库存数据,低于安全库存的,自动发采购申请或者通知采购人员。

场景五:发票采集与查验。员工提交的报销单,发票自动采集、自动查验真伪、自动录入财务系统。

十、系统联动:让企业流程形成闭环

飞书消息通知:订单异常(比如金额异常大)、库存预警、客户跟进提醒,都通过飞书消息通知到对应的人。

飞书多维表格:企业的运营数据(订单量、销售额、库存)存在多维表格里,管理层随时可以看数据看板。

邮件发送:有些客户和供应商不用飞书,用邮件。自动发邮件通知(订单确认、发货通知、对账单)。

定时任务配置:订单汇总每天早上9点跑;库存检查每天下午5点跑;客户跟进检查每天早上10点跑。

十一、工程化与规范:企业RPA的必修课

在这里插入图片描述

子流程封装:企业流程复杂,一定要拆成子流程。订单汇总流程我拆成了:各平台登录子流程、订单采集子流程、数据清洗子流程、ERP写入子流程、通知子流程。

调试技巧:企业数据不能随便动,调试的时候要用测试环境。我会在关键步骤后面加"打印日志",把处理的订单号输出出来,出问题的时候能精确定位到哪条订单出了问题。

命名规范:企业流程要给后来人看的,命名要特别清晰。platform_name比pn好,order_count比oc好,target_sheet比ts好。

版本选择:企业用建议上创业版或者企业版。社区版免费但有功能限制,企业场景经常需要私有化部署、API对接等高级功能。

流程模板化:同类流程(比如不同电商平台的订单采集)底层逻辑一样,做成模板,新平台来了改改参数就能用。

权限管理:企业里RPA流程要有权限控制,谁能修改流程、谁能查看数据,要有明确的分级。

十二、速查表与常见报错:企业场景专属问题

元素定位失败:企业系统多用table布局(老系统),元素层级很深,XPath要写得很长。建议用相对XPath(//开头),不要用绝对XPath(/html/body/…)。

Excel报错:企业导出的Excel经常是.xls格式(Excel 2003),要用对应的指令读取。还有合并单元格的问题,读取之前要确认有没有合并单元格。

数据库连接报错:企业数据库经常是SQL Server或者Oracle,连接串格式和MySQL不一样,要查官方文档。

在这里插入图片描述

ERP系统响应慢:在关键步骤之间加足够的等待时间,不要省这几秒。

权限问题:企业系统的账号经常有权限限制,确保RPA用的账号有必要的操作权限。

数据准确性校验:企业数据处理完,要做校验。比如订单总金额在处理前后是否一致,不一致要报警。

我整理了一份企业RPA场景的XPath速查表和常见报错解决方案,放在 home.linyan.cloud,企业用户可以去下载参考。


#影刀RPA #RPA教程 #企业自动化 #订单自动化 #中小企业

作者:林焱

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐