Python做RPA核心是模拟操作、识别状态、控制流程三块;用PyAutoGUI+OpenCV处理无API老旧系统,Playwright处理网页,APScheduler定时,configparser管理配置,注重稳定性与可维护性。

用Python做RPA,核心不是堆库,而是把“人怎么点、怎么看、怎么判”翻译成代码逻辑——重点在模拟操作、识别状态、控制流程三块。
用PyAutoGUI + OpenCV 做“眼睛+手”
PyAutoGUI负责鼠标键盘操作,OpenCV负责截图比对和图像定位,这是最轻量也最可控的组合。不需要依赖特定软件接口,适合处理没有API、UI又不稳定的老旧系统。
- 先截取关键按钮/状态区域(比如“提交成功”弹窗左上角图标),保存为模板图
- 运行时用cv2.matchTemplate做模板匹配,拿到坐标后让PyAutoGUI点击
- 加sleep或wait_for_image机制防太快——界面没加载完就点,必失败
用Playwright / Selenium 抓“有结构”的网页
网页类RPA优先选Playwright:快、稳定、支持多浏览器、自带等待机制。它能自动等元素出现、等网络空闲、甚至等JS执行完,省掉大量手动time.sleep。
- 别写死XPath,用role=“button”、text=“确认提交”这类语义化定位更抗变
- 关键步骤后加page.screenshot()留痕,出错时一眼看出卡在哪步
- 登录态用storage_state保持,避免每次重登,也方便多账号轮切
用schedule + APScheduler 控制“什么时候跑”
本地跑的RPA,不用上Airflow这种重型调度器。APScheduler够用且易调试:内存模式适合单机,BackgroundScheduler可后台常驻。
立即学习“Python免费学习笔记(深入)”;
- 定时任务用cron风格最直观,比如“每天8:30跑一次”直接写hour='8', minute='30'
- 加try/except包住主流程,异常发微信/邮件提醒,别让机器人静默挂掉
- 加个简单日志记录:开始时间、处理条数、是否成功,排查时省一半力气
用configparser + JSON 管理“哪些要变”
账号密码、路径、URL、阈值这些变量,全硬编码进.py文件?改一次就要动代码,还容易误提交。统一抽到config.ini或settings.json里。
- ini文件分[login]、[path]、[timeout]段,读取用configparser即可
- 敏感字段如密码,可用环境变量覆盖(os.getenv('PASSWORD')),本地开发用明文,上线用密钥管理服务
- 配置项加注释说明用途和典型值,新同事接手不抓瞎
基本上就这些。不复杂,但容易忽略细节——稳住识别、控好节奏、管好配置,机器人就能天天准时干活。










