脚本 API 参考
脚本运行时提供的全部接口:控件查找与点击、选择器、手势与按键、App 与页面、全局函数、日志与网络请求、相册、找色找图和文字识别。每个接口都写明参数、返回值和抛错条件,示例都能直接运行。
共 93 个接口
最小可运行脚本
脚本必须返回 true 才算成功;返回 false 或不返回都记为失败。运行时库已经拼在脚本前面,client、clickElement、logi、sleep 这些可以直接用。
javascript
function main() {
// 打开「设置」,点进「通用」
client.session('com.apple.Preferences');
sleep(2);
if (!clickElement('label', '通用', 5)) {
loge('没找到「通用」');
return false;
}
logi('已进入通用设置');
return true;
}
main();通用约定
- 参数按顺序写
- 所有函数都按顺序传参,不用写 {}。常用的参数在前面,后面用不上的可以不写;中间某个想用默认值就写 null,比如 findImage('a.png', 0, null, 0.85)。照旧写法传 {} 会报 INVALID_ARGUMENT,报错里直接给出改好的那一行。
- 控件定位写明按什么找
- 控件函数的前两个参数是按什么找、找什么:clickElement('label', '登录')。按什么找只有 7 种,和选择器同名:label(文字完全相等)、labelContains(文字包含)、accessibilityId(控件的名字,最稳)、xpath、predicate、classChain、className。
- 时间一律是秒
- 所有时长参数都以秒为单位,可以是小数。查找、读取类默认只看一眼,点击类默认最多等 10 秒。超过 600 的取值会被当成误传的毫秒拒绝。唯一的例外是 setTimeout 和 setInterval,它们沿用 JavaScript 的毫秒约定。
- 坐标和区域
- 坐标一律是 point,不是像素:拿到的 x、y 可以直接给 client.click,同一份脚本在 2x、3x 屏上都对。x、y 都在 0~1 之间时按屏幕比例处理。区域写成 [x, y, 宽, 高],四个数都在 0~1 之间按屏幕比例算(换分辨率也通用),否则按 point。
- 同一个画面查好几样
- 找色、找图、识字默认每次自己截一张、用完就释放。要在同一个画面上查好几样,先 keepScreen() 把画面定住、查完 releaseScreen();或者用 withScreen(function () { … }),跑完自动放开。
- 停止是协作式的
- 在控制台点「停止」只会置位一个标志,不会强行打断脚本。长循环必须检查 shouldStop(),在它返回 true 时退出;sleep 和查找类函数的等待会在停止后立即返回。
- 错误按 code 判断
- 所有异常都带稳定的 code 字段,按 code 判断,不要匹配 message 文字 —— 文字是写给人看的,措辞会变。查找类函数找不到时返回 null 或 false,不抛异常;抛异常的是参数写错、设备或 WDA 出问题这类真正的错误。
接口模块
控件7日常脚本用得最多的一组。参数按顺序写:按什么找、找什么、最多等几秒。找不到返回 null 或 false,不抛异常;只有参数写错才会抛 INVALID_ARGUMENT。选择器7选择器只负责造一个控件对象,不会立刻去查;真正的查找发生在调用 exists / click / getText / getRect 的时候。和 findElement 相比,它能取第几个、能找看不见的控件,但不带等待。手势与按键19点击、滑动、拖拽、捏合,以及系统按键和键盘。坐标可以写 point,也可以写 0~1 的屏幕比例;方向滑动的起点、距离、角度、时长每次都重新随机,轨迹做成人手的样子。应用与会话6打开、切换、结束 App,以及查询 App 的状态。打开和切换都用 client.session —— 它同时负责建立自动化会话。页面与系统7读当前页面的控件树、屏幕尺寸和截图,打开链接、写剪贴板,处理系统弹窗。全局对象与函数7脚本运行前自动注入的对象和函数:设备客户端 client、脚本参数、任务与设备的标识、停止信号,以及统一的错误码。工具14日志、等待、时间、随机数、Base64 和网络请求。三级日志都会上报到任务日志,在控制台里实时可见。相册与文件8统计、清空相册里的照片和视频,把图片或视频存进相册,以及把文件下载到 App 里。第一次用会请求相册权限。找色找图13在屏幕上找颜色、找图片,识别画在图片或画布里、控件树里没有的东西。在设备上完成,不联网。参数按顺序写:找什么、最多等几秒、区域,再往后是不常改的门槛。返回的坐标都是 point,可以直接给 client.click。文字识别5用系统的 Apple Vision 识别屏幕上的文字,在设备上完成,不联网、不上传截图。能用控件定位(clickElement)的地方优先用控件 —— 控件树是结构化的,快且准;OCR 的用武之地是画在图片、画布里,控件树里根本没有的文字。