App 改版后脚本失效怎么办?用 AI 操作手机不用重写

脚本突然不跑了,十个里有九个不是代码的问题,是界面动过了。

场景实操 · 6 分钟读完
本页目录
  1. 改版动的是定位,静默更新更难查
  2. 看屏幕判断,什么时候还得改
  3. 少返工,出问题怎么查

脚本跑得好好的,某天早上突然报错。查了半天代码没问题,最后发现 App 更新了一版,某个按钮挪了地方。

有脚本的团队里,这事几乎必然发生。App 是别人在维护的,改版节奏不受你控制。

改版动的是定位,静默更新更难查

业务逻辑还在。坏掉的是脚本用来找目标的那套坐标。

脚本定位通常靠两样:位置和标识。

位置是第几行第几列,截图上量出来,写死在脚本里。界面一动,坐标全废。

标识是控件 ID 或者控件路径。理论上比坐标稳,但改版经常把这些也重新生成一遍。前端框架升级的时候,控件 ID 会成批变化。

失效往往很突然。昨天还好好的,今天全挂。中间没有人改过脚本,运行环境变了。

比知道它改版了更麻烦的,是你不知道。

很多 App 静默更新,手机连上 WiFi 的晚上就自动升级。第二天照常跑脚本,报错,然后去查一个你根本不知道发生过的变化。

没法靠「最近有没有更新」判断问题从哪来,只能从报错反推。

看屏幕判断,什么时候还得改

iEasyRun 不记录坐标,看屏幕上有什么。

执行每一步之前,它先读当前页面:有哪些元素、各自写着什么字,判断哪一个是目标,再点下去。

改版时两类做法差在这:

变化类型 写死坐标的脚本 看屏幕判断
按钮挪位置 失效,要重配 正常
菜单层级变了 失效,要重配 正常
控件 ID 重新生成 失效,要重配 正常
页面多了一个弹窗 大概率卡住 通常能自己关掉
按钮文案改了 不受影响 要补一句描述
流程本身多了一步 失效 要改流程

前四行是改版最常见的,后两行才需要你动手,而且少得多。

要动手的有两种。

文案变了。按钮从「导出」改成「下载」,或者菜单从「我的」改成「个人中心」。它按文字找,新说法认不出来。在描述里把新说法加进去,比如「点导出(有些版本叫下载)」。

流程本身变了。原来点了导出直接下载,现在多了一个「选择格式」的确认步骤。认字没有认错,是业务上多了一步,描述里要补上这一段。

这两种改完就完事,不会像坐标那样,每改一版界面就重来一轮。

升级之后建议主动跑一次。大概率不用改,跑一次能确认。低频任务尤其要跑。它可能两个月才跑一次,不验证的话,问题会在最不方便的时候露出来。

原来的脚本不用扔。

看变化频率:

  • 每天都跑、流程两年没变、对速度敏感,脚本更省资源,继续用
  • 界面版本迭代快,或者你懒得维护,用描述跑
  • 介于两者之间,先留着,等它下一次失效再决定

很多团队混着用。核心的高频流程用脚本,外围的、容易变的、低频的用描述跑。同一台手机上两种都在,不冲突。

少返工,出问题怎么查

两条习惯能挡掉大部分维护。

把入口描述成做什么,别描述在哪里。「打开我的订单」比「点右下角那个图标」稳。前者说的是目的,后者说的是位置,位置会变。

把容易变的部分做成参数。句式、关键词、目标店铺每次都可能不一样,做成调用时能填的参数,别写死在流程里。改版时只改动的那一处,不用通读整个流程。

先看 执行历史 里那一步的截图。

比读报错文字有用。报错通常只写「找不到元素」,截图能看出当时停在哪个页面。改版导致的问题,十次里有八次是停在一个你从来没见过的新页面上。

看到那个页面,就知道该补哪一句。比如加一个「如果出现 XX 页面,先点跳过」。

软件完全免费,装在自己电脑就能跑。改版之后,维护从每次都要重新调一遍,变成偶尔补一句话。更多场景可以看 移动端 UI 自动化测试 和 不会写代码怎么做手机自动化。

常见问题

脚本失效最常见的原因是什么?
界面改版占了大多数。按钮挪了位置、菜单层级变了、弹窗多了一步、控件 ID 重新生成——这些都不影响业务逻辑,但会让写死坐标和控件路径的脚本找不到目标。
为什么看屏幕决定的做法不受影响?
因为它判断的依据是语义而不是位置。脚本认的是「第 320 行 65 列的像素」,它认的是「写着导出两个字的那个按钮」。按钮换到哪儿,语义没变,它就还找得到。
什么情况下它也会失效?
两种情况:一是文案变了,比如按钮从「导出」改叫「下载」;二是流程本身变了,比如多了一个确认步骤。前一种补一句描述就行,后一种要改流程。
改版之后要重新跑一遍验证吗?
建议跑一次。虽然大概率不用改,但跑一次确认比等业务出问题再发现要好。低频任务尤其要注意,因为它可能两个月才跑一次。
原来的脚本要不要全删掉?
不用。高频、流程完全稳定、对速度敏感的活,脚本依然更省资源。两种方式可以并存,同一台手机上都能用。
错误提示只写「找不到元素」,怎么定位?
先看执行历史里那一步的截图。界面对不对、是不是停在了意料之外的页面,看一眼就知道。改版导致的问题基本都是「停在了新出现的页面」这种形态。
App 自动更新也会影响吗?
会。很多 App 是静默更新的,你不一定知道改了。这恰恰是靠位置定位最吃亏的地方:变化发生在你没注意的时候。
怎么减少改版带来的维护工作?
两条:把入口描述成「做什么」而不是「在哪里」;把容易变的部分做成可填的参数。做到这两点,一次改版通常只需要改一两句描述。

脚本又失效了?

换一种不看坐标的做法

软件完全免费,装在自己电脑就能跑。改版之后不用重配,它自己找。