- Overview - 综述
- Q&A - 常见问题
- App - 应用
- Console - 控制台
- CoordinatesBasedAutomation - 基于坐标的操作
- Device - 设备
- Dialogs - 对话框
- Engines - 脚本引擎
- Events - 事件与监听
- Floaty - 悬浮窗
- Files - 文件系统
- Globals - 一般全局函数
- Http - HTTP
- Images - 图片与图色处理
- Keys - 按键模拟
- Media - 多媒体
- Modules - 模块
- WidgetsBasedAutomation - 基于控件的操作
- Sensors - 传感器
- Shell - Shell命令
- Storages - 本地存储
- Threads - 多线程
- Timers - 定时器
- UI - 用户界面
- Work with Java - 调用Java API
Auto.js 4.1.0 文档
目录
-
基于坐标的触摸模拟#
#设置脚本坐标点击所适合的屏幕宽高。如果脚本运行时,屏幕宽度不一致会自动放缩坐标。
例如在1920*1080的设备中,某个操作的代码为
setScreenMetrics(1080, 1920); click(800, 200); longClick(300, 500);那么在其他设备上AutoJs会自动放缩坐标以便脚本仍然有效。例如在540 * 960的屏幕中
click(800, 200)实际上会点击位置(400, 100)。安卓7.0以上的触摸和手势模拟#
#模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。
一般而言,只有点击过程(大约150毫秒)中被其他事件中断(例如用户自行点击)才会点击失败。
使用该函数模拟连续点击时可能有点击速度过慢的问题,这时可以用
press()函数代替。longClick(x, y)#
模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。
一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。
press(x, y, duration)#
模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。
如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。
一般而言,只有按住过程中被其他事件中断才会操作失败。
一个连点器的例子如下:
//循环100次 for(var i = 0; i < 100; i++){ //点击位置(500, 1000), 每次用时1毫秒 press(500, 1000, 1); }swipe(x1, y1, x2, y2, duration)#
模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。
一般而言,只有滑动过程中被其他事件中断才会滑动失败。
gesture(duration, [x1, y1], [x2, y2], ...)#
duration<number> 手势的时长- [x, y] ... 手势滑动路径的一系列坐标
模拟手势操作。例如
gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为2秒。gestures([delay1, duration1, [x1, y1], [x2, y2], ...], [delay2, duration2, [x3, y3], [x4, y4], ...], ...)#
同时模拟多个手势。每个手势的参数为[delay, duration, 坐标], delay为延迟多久(毫秒)才执行该手势;duration为手势执行时长;坐标为手势经过的点的坐标。其中delay参数可以省略,默认为0。
例如手指捏合:
gestures([0, 500, [800, 300], [500, 1000]], [0, 500, [300, 1500], [500, 1000]]);RootAutomator#
#点击位置(x, y)。其中id是一个整数值,用于区分多点触摸,不同的id表示不同的"手指",例如:
var ra = new RootAutomator(); //让"手指1"点击位置(100, 100) ra.tap(100, 100, 1); //让"手指2"点击位置(200, 200); ra.tap(200, 200, 2); ra.exit();如果不需要多点触摸,则不需要id这个参数。 多点触摸通常用于手势或游戏操作,例如模拟双指捏合、双指上滑等。
某些情况下可能存在tap点击无反应的情况,这时可以用
RootAutomator.press()函数代替。RootAutomator.swipe(x1, x2, y1, y2[, duration, id])#
模拟一次从(x1, y1)到(x2, y2)的时间为duration毫秒的滑动。
RootAutomator.press(x, y, duration[, id])#
模拟按下位置(x, y),时长为duration毫秒。
RootAutomator.longPress(x, y[\, id])#
模拟长按位置(x, y)。
以上为简单模拟触摸操作的函数。如果要模拟一些复杂的手势,需要更底层的函数。
RootAutomator.touchDown(x, y[, id])#
模拟手指按下位置(x, y)。
RootAutomator.touchMove(x, y[, id])#
模拟移动手指到位置(x, y)。
RootAutomator.touchUp([id])#
id<number> 多点触摸id,可选,默认为1
模拟手指弹起。
使用root权限点击和滑动的简单命令#