影刀RPA新手教程:中小企业老板入门完全指南——用RPA节省人力的5个最值得做的场景
影刀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都可以。
五个常见报错:
- 连接超时——企业内网有时候慢,加热重试
- 中文乱码——连接串加charset=utf8mb4(MySQL)或者charset=GBK(老系统)
- 字段类型不匹配——ERP系统的字段类型经常很严格,要做类型转换
- 批量插入失败——用executemany,失败后要回滚
- 连接没关闭——用完必须关闭,不然连接池耗尽后所有操作都失败
七、鼠标键盘图像自动化:企业老系统的救命稻草
企业里有很多老系统,不是网页版的,是桌面客户端(甚至是基于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教程 #企业自动化 #订单自动化 #中小企业
作者:林焱
更多推荐




所有评论(0)