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

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

场景实操 · 6 分钟读完
本页目录
  1. 改版到底破坏了什么
  2. 一个更隐蔽的问题:静默更新
  3. 换成看屏幕判断,变化就消化掉了
  4. 什么情况下还是得动手
  5. 那原来的脚本要不要扔
  6. 减少改版带来的返工
  7. 出问题了怎么查

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

这件事在有脚本的团队里几乎必然发生。理由很简单:App 是别人在维护的,它们的改版节奏不受你控制。

改版到底破坏了什么

先把问题说准。改版破坏的不是你的业务逻辑,是你的脚本用来找目标的那套坐标。

脚本定位元素通常靠两样东西:位置和标识。

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

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

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

一个更隐蔽的问题:静默更新

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

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

这在校验上有实际影响:你没法靠「最近有没有更新」来判断问题来源。 只能从报错反推。

换成看屏幕判断,变化就消化掉了

iEasyRun 的定位方式不一样:它不记录坐标,而是看屏幕上有什么。

具体来说,执行每一步之前,它先读当前页面上的内容——有哪些元素、各自写着什么字,然后判断哪一个是目标,再点下去。

这个差别在改版场景里的体现很直接:

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

前四行是改版最常见的形态,正好是它的强项。后两行是真正需要你介入的,而它们的频率远低于前四行。

什么情况下还是得动手

诚实地说,有两种。

  • 文案变了:按钮从「导出」改成「下载」,或者菜单从「我的」改成「个人中心」。这种变化它认不出来,因为它就是按文字找的。改法很简单:在描述里把新说法加进去,比如「点导出(有些版本叫下载)」。
  • 流程本身变了:原来点了导出直接下载,现在多了一个「选择格式」的确认步骤。这种不是识别问题,是业务逻辑变了,需要你在描述里补上这一段。

这两种都属于明确的、一次性的修改。改完就完事,不会像坐标那样每改一版界面就要重来一轮。

还有一个提醒:升级之后建议主动跑一次验证。虽然大概率不用改,但跑一次能确认。低频任务尤其要这么做——它可能两个月才跑一次,你不验证的话,问题会在最不方便的时候暴露出来。

那原来的脚本要不要扔

不用扔。

判断标准是变化频率:

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

实际用下来,很多团队是混着用的:核心的高频流程用脚本,外围的、容易变的、低频的活用描述跑。两种方式在同一台手机上并存,不冲突。

减少改版带来的返工

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

  • 把入口描述成「做什么」,不是「在哪里」:「打开我的订单」比「点右下角那个图标」稳得多。前者说的是目的,后者说的是位置——而位置正是会变的东西。
  • 把容易变的部分做成参数:句式、关键词、目标店铺这些每次都可能不一样,做成调用时能填的参数,而不是写在流程里。改版的时候你只需要改动的那一处,不用通读整个流程。

出问题了怎么查

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

这一条比读报错文字有用得多。报错通常只写「找不到元素」,但截图会告诉你当时停在了哪个页面。改版导致的问题,十次里有八次的形态是一样的:停在一个你从来没见过的新页面上。

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

软件完全免费,装在自己电脑就能跑。脚本失效这件事不会消失,但可以从「每次改版都要重新调一遍」变成「偶尔补一句话」。想看更多场景做法,可以读 移动端 UI 自动化测试 或 不会写代码怎么做手机自动化。

常见问题

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

脚本又失效了?

换一种不看坐标的做法

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