点击、长按、滑动、拖拽——屏幕坐标与控件两种操作模式
两套操作模式
基于控件(推荐)
通过选择器定位控件后操作:
text("签到").click(); // 点击文本为「签到」的控件
id("btn_submit").click(); // 点击 ID 为 btn_submit 的控件
className("Button").click(); // 点击第一个 Button 类型控件
优点:不受屏幕分辨率、控件位置变化影响,换设备也能用。缺点:目标 APP 必须暴露控件树信息(大多数 APP 可以,少数游戏和特殊 APP 不行)。
基于坐标(兜底方案)
直接操作屏幕坐标:
click(500, 1000); // 点击坐标 (500, 1000)
longClick(500, 1000); // 长按
press(500, 1000, 500); // 按住 500ms
优点:任何界面都能用(包括游戏画面)。缺点:坐标是硬编码的,换设备或 APP 界面改版就失效。
查看坐标
悬浮窗 → 「布局分析」→ 左上角会显示当前触摸位置坐标,或者在 Auto.js 设置里开启「显示指针位置」(开发者选项)。
滑动
// 从 (500, 1500) 滑到 (500, 500),耗时 300ms
swipe(500, 1500, 500, 500, 300);
// 从一个控件滑到另一个控件
var btn = text("上一页").findOne();
var btn2 = text("下一页").findOne();
btn2.click(); // 直接点更简单,滑动常用于长列表
拖拽
// 从起点拖到终点,拖拽模拟
drag(100, 500, 800, 500, 500);
多点触控(手势)
// 模拟双指捏合缩放
gesture(1000, [
[200, 500], // 第一根手指起始
[800, 500], // 第二根手指起始
], [
[400, 500], // 移动到
[600, 500],
]);
等待再操作
控件可能需要加载时间:
// 最多等 10 秒,找到就点
text("确认").waitFor(10000).click();
// 等待界面稳定
sleep(2000); // 固定等 2 秒
sleep vs waitFor:
sleep是盲等,waitFor是智能等(找到目标立即返回)。能用waitFor就别用sleep。