通过AI,我用影刀做了一个【拼多多多店铺售后订单自动导出流程】,过程比我想的复杂多了
我为什么要去做这个自动化的东西,说起来是在3月份下午接到本地知名企业老板的电话,问我最近在做什么?看我朋友圈再发关于AI这块的东西,让我去公司找她聊聊。第二天就过去聊了下,聊天内容我具体的我就不说了,最后说到能不能帮我们财务做一个每天重复的动作,让他自动化,我说可以。

然后我就开始了我的影刀之路,之前我对影刀只有使用,没有具体的搭过。
在一边干着一边学习中,把网页端流程跑通了,但是涉及到一个问题:需要用户的登录名和密码;所以,这个网页端的不太好。马上就开发了一个桌面端的,就是用拼多多的工作台来搭建。
接下来,我把遇到的问题和难点写下来。
首先,我说下这个工具的作用是:帮助财务或是电商对账时下载前一天的数据,当然了,也可以根据客户的需求来定制的。—-总之把一切重复机械的事情交给自动化小机器人。
一开始我以为和搭建网页端自动化一样很简单的。因为流程就是:打开拼多多工作台,点售后,选日期,导出,保存。
但在真正搭建的时候发现,自动化这东西,最难的不是“让它跑一次”,而是“让它在各种情况下都能稳定跑”。

首先做的是单店铺流程,因为只有跑通单点,才能跑通多店,就做了个单店的。
大概流程是这样的:打开拼多多工作台,进入指定店铺,点击首页,进入指定店铺工作台,选择售后工作台,再选择相应的售后成功的选项,昨天日期,查询,批量导出,保存文件。
搭建完以后这个单店的版本能跑通,也能下载我需要的东西。
但问题来了,遇到5月1日,要下载4月30日的,不能下载,确选的日期是5月30日的,失败了。
我原来设计的日期选择逻辑是只判断了目标日期是几号,比如 30 号,却没有判断当前的月份。导致它选成了 5 月 30 日。也就是说,流程里是在选“30号”,但是它没搞清楚是哪个月的 30 号。识别的是右侧的30号。接下来我把日期的选择逻辑改成:
先获取左侧日历月份再获取右侧日历月份再获取目标月份和目标日(需要下载的日子)判断左侧或者右侧哪个月份等于目标月份然后再点对应月份里的对应下载的日子。
还有一个细节就是:我之前写了.lstrip(‘0’),结果影刀并没有按我想的方式处理,导致判断不生效。然后我删掉.lstrip(‘0’),直接用目标月份,流程才正常。
这个坑提醒我:在做日期选择的时候,不要只看“日”,而不看月份。要先看月份再看日子。不然你碰到月初,流程必挂。如果是人选的话可以忽略的,但是这个流程就是为了节省时间,解放人工手工操作的。

拼多多的随机弹窗
这个店铺工作台可不是一个安静的页面,它会随机弹窗。
比如“申诉复议功能上线”这种弹窗,不是每次都有,但一旦出来,就会挡住后面的按钮。导致程序不会进行下去的。
它这类弹窗不是固定每次都出现的,而是不一样什么时间就会弹出来,这里它设计的是真不合理,这种弹窗只需要运营和运营助理的账号弹就好了,它却不管你的账号是干什么的,全部弹。没办法,它一直很吊。
开始呢,我想忽略它,不弹出来我就不管他了,后来发现不行。自动化流程里面最怕的就是“偶尔出现”。因为你不知道它什么时候把流程给挡死,流程就不运行了。
然后我专门做了一个子流程:关闭随机弹窗。里面用到的是“图像存在 + 点击图像”的方式去关弹窗。这里要记住截图不能截太大。不然没办法点击截图关闭它的。因为X子不在图的中心,不好关闭它。所以我只截灰色圆形X子本身,这样点击中心才能关闭弹窗。

窗口最大化
我在办公室用的是笔记本外接显示器,流程可以跑通。回到家只用笔记本屏幕,流程就找不到元素了。分辨率、缩放明明都是 100%,但还是不稳定。后来发现,窗口状态很关键。如果窗口不是最大化,有些元素位置和布局会变化。
一开始我是用点击右上角最大化按钮,但这个方式不太好:打开工作台以后如果是小窗口你最大化就变成大窗口,下一次再打开还是最大化,这时会识别不到元素导致流程停下。这个方案不行,那就换个方案,用WIn+↑上键,这个方法用起来也不太好,后来我直接用的最大化窗口这个功能,它可以自动识别窗口是最大化还是最小化,最大化就直接不管了,最小化会自动就最大化了。挺好用的。
怎么实现多店铺的处理:
一开始我想法很简单:Excel 里写店铺名称,主流程循环读取,每次把店铺名传给子流程。但是再实际运行中,影刀的 win 元素点击,不是你给它一个文字,它就能自动找这个文字点。它需要提前捕捉元素。这就意味着,如果我提前捕捉了“某家店铺的名字”,那换成其他的店铺名,它根本不知道点哪里。
如果走固定捕捉元素,那就需要定制版。每个客户的店铺名称和数量不一样,就要给每个客户配置。但是客户不可能给你他的店铺让你来做这个吧。然后我和GPT讨论到底应该怎么去解决这个问题,经过多轮讨论,我们找到更好的办法了。
最好的办法:循环顶部店铺标签

拼多多工作台里面,多个店铺会显示在顶部标签栏。也就是说,客户只要提前登录好所有店铺,顶部就会出现这些店铺标签。这样我就不用 Excel 店铺列表了。而是直接让影刀:循环顶部相似元素➔点击当前店铺标签➔获取当前店铺名称获➔调用子流程导出订单。这个方案一下子就通了。它不需要用到OCR,OCR还收费,果断不能用。也不需要我提前知道客户店铺名称和客户登录了几个店铺。客户有几个店铺,它就循环多少次。
这个思路比我一开始的 Excel 店铺列表更适合当前版本。但前提也很明确:客户必须先手动登录好拼多多工作台里的所有店铺。这个流程不负责登录,也不处理验证码。
但是有一个最大的隐藏坑:元素绑定了具体店铺标题

这个坑可是最关键的,我发现第一个店铺能跑,第二个店铺就找不到元素。比如“售后工作台”这个按钮,明明每个店铺都有,但第二个店铺就是找不到。最后打开元素编辑器才发现,元素上层 Window 里绑定了:title 等于 某某某–拼多多工作台,这就等于告诉影刀:你只能在“某某某店”这个窗口里找这个元素。换到第二个店铺,窗口标题变了,它当然找不到。解决方法就是:打开元素编辑器,点击 Window 节点,把 title = 某某店铺–拼多多工作台这个勾去掉。只保留更通用的条件,比如:cls;app;acc-name
这个问题解决后,流程才真正能跨店铺跑。这个坑是非常值钱。是我在跑第二个店铺的时候,把所有元素都重新抓取了一遍,以为就没事了,但是再跑第三个店铺的时候,又找不到元素了,我马上和GPT讨论到底是什么原因,又是经过多轮讨论得到的结果,所以说你要是遇到这种情况,一定要看下元素里的选项。
自动化真正难的地方就在这里:不是点击按钮,而是让定位规则足够通用。
最后做出来的版本
现在这套流程的结构是:主流程循环顶部店铺标签➔获取当前店铺名称➔调用“导出昨天售后订单”子流程➔子流程进入售后工作台➔选择昨天日期➔查询➔批量导出➔保存文件➔返回成功或失败➔主流程打印日志并继续下一家。
另外还有一个关闭随机弹窗的子流程。现在它已经能循环多个店铺。
我对这个流程的定位:
这个流程目前不是完全通用版。它更准确的定位是:拼多多工作台已登录多店铺售后订单导出工具
它不负责:账号登录,短信验证码,新增店铺授权,拼多多客户端账号管理
它负责的是:在客户已经登录好所有店铺的情况下,自动循环顶部店铺标签,导出每个店铺昨天的售后订单。
这就是第一版最实际的边界。
这次最大的收获:
以前我以为自动化就是“把人点鼠标的动作录下来”。
但真正做下来,我发现自动化要稳定,至少要考虑这些东西:参数化,子流程复用,成功失败返回值,日志,弹窗,窗口状态,日期跨月,元素定位泛化,多店铺循环,客户交付边界。
流程能跑一次,不代表能交付。要多次实验以后才能交付。
流程能在自己电脑跑,也不代表能在客户电脑跑。要发给客户去测试才能放心交给客户使用。
自动化真正的价值,不是“我点了一遍它会跟着点”,而是它能在变化环境里尽量稳定地完成任务。
这次做完以后,我对 RPA 的理解更深了一点。
它不是简单脚本。
它更像是一个小型产品。
能不能交付,取决于你有没有把这些不稳定因素一个一个拆掉。
这也是我这次最大的收获。
最后,这个最初的版本交给客户测试的时候,有一个店铺不能识别到某一个元素,我过去看了一下,发现是这个店铺的工作台多了一行字,导致鼠标滚动的少了,页面挡住元素,所以不能识别到元素,这个问题好解决,直接让他鼠标多滚动几下就好了。
和客户聊了一下其他的需求,我预计这个假期就会搞定的,到时候我会继续更新的。
看到这里,十分感谢您的阅读,如果对你有帮助,请转发给朋友一起阅读!
希望这篇文章能帮到你,可以把自己重复机械的工作交给AI或RPA.
夜雨聆风