软件使用手册合辑

免Root自动点击与找图找色实操:屏幕上没有控件怎么办

自动化脚本最理想的情况是屏幕上每个按钮都能按名字、按 ID 精准定位;但真实场景里总会遇到"控件读不出来"的时刻——游戏里的图标按钮、视频播放器上的浮层、自绘界面里的一张图。这时脚本就得学会"看图做事":找色、找图、识字。本篇把这四条操作路线摆在一起讲清楚各自的适用场合,示例以安卓端 JavaScript 自动化工具 Autox.js 的写法为准。

工具的安装与权限配置见 autox-js.gltd.quest,入门路径(含录制与第一个脚本)见安卓手机自动化脚本入门,本篇直接从"动手方式"讲起。

一、四条路线,一张表选型

场景首选路线原因
普通应用界面(设置、聊天工具等)控件选择器最稳最快,跨机型通用
按钮位置固定、颜色会变找色 / 颜色检测最轻量,几乎不耗资源
图标固定、颜色文字都变找图(模板匹配)拿小图当模板,整屏里找
只有文字可依赖且无控件OCR 文字识别最重,但唯一能"读懂内容"

混合使用是常态:控件找外框、坐标点中心,截图判断状态,OCR 兜底认字。

二、控件定位补课:两个高频技巧

控件写法的基础是 text()、id()、desc() 这类选择器,实战中最常用的两个补充技巧:

控件不可点时,点它的中心。有些控件 clickable 属性是 false,直接 click() 无效,换成按边界点中心:

let w = desc("更多").findOne(5000);
if (w) {
    click(w.bounds().centerX(), w.bounds().centerY());
}

获取坐标用系统工具。开发者选项里的「指针位置」会实时显示触点坐标;这套工具自带的界面分析浮层更方便——点哪个控件就高亮哪个,坐标、ID、文字一目了然。

三、找色:最轻量的状态判断

判断"某个位置是不是某个颜色"就能解决很多问题:按钮亮没亮、进度条满没满、红点出没出现。

if (!requestScreenCapture()) { toast("没有截图权限"); exit(); }
sleep(1000);                       // 等截图通道就绪

let img = captureScreen();         // 抓当前屏幕
let ok = images.detectsColor(img, "#11ff33", 100, 200);
toast(ok ? "颜色匹配" : "不匹配");

三个要点:

四、找图:拿一张小图当模板

目标按钮形状固定、文字颜色都多变时,用模板匹配:截一张包含目标的小图,裁到只含按钮本身,存进脚本目录:

let tpl = images.read("button.png");       // 模板图放脚本目录
let p = images.findImage(captureScreen(), tpl);
if (p) {
    click(p.x, p.y);
} else {
    toast("没找到按钮");
}

最大的坑是分辨率:模板图用什么分辨率截的,运行时的手机就得是同样分辨率,跨分辨率分发脚本时匹配率会暴跌。模板越小、越独特,找得越快越准,别拿半张屏幕当模板。

五、OCR:把屏幕上的字读出来

画面上只剩文字可依赖时(图片里的说明、聊天内容、扫描结果),走 OCR。7.x 分支内置了 PaddleOCR 模型,开箱可用;老版本的函数形式差异较大,动手前先翻内置文档。

套路固定三步:截图 → 交给 OCR 模块拿到文字与位置 → 对文字做判断(识别到"开始"就点它的坐标)。注意两点:

六、截图授权这道关

所有"看图"路线的前提都是拿到屏幕画面。首次执行截图请求时系统会弹「将开始截取屏幕内容」确认框,点「立即开始」才行;这份授权每次运行脚本都要过一遍(弹窗点一下即可),错过或拒绝时截图函数会报错或返回空,重跑重新授权就好。

另外注意系统限制:从 Android 10 起,应用在后台无法自行拉起界面,后台脚本里请求截图授权会没反应——先回到工具里把脚本跑起来,再让它弹授权窗。

七、把路线串起来

实际脚本往往是"控件点九成、截图点一成":主流程用控件选择器稳稳推进,个别读不出控件的环节用找色或找图判断状态。从装工具到跑通第一段脚本的操作顺序,整理在 autox-js.gltd.quest;先把安卓手机自动化脚本入门里的基础句式练熟,再照本篇给画面类场景补上"眼睛",一条完整的自动化链路就成形了。

本站文档

  1. 免Root自动点击与找图找色实操:屏幕上没有控件怎么办
  2. 安卓手机自动化脚本入门:从录制动作到跑通第一个脚本

访问 Autox.js 介绍站