安卓 7.0 以上的触摸和手势模拟

稳定性: 稳定

注意以下命令只有 Android7.0 及以上才有效

click(x, y)

  • x {number} 要点击的坐标的 x 值
  • y {number} 要点击的坐标的 y 值

模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。

一般而言,只有点击过程(大约 150 毫秒)中被其他事件中断(例如用户自行点击)才会点击失败。

使用该函数模拟连续点击时可能有点击速度过慢的问题,这时可以用press()函数代替。

longClick(x, y)

  • x {number} 要长按的坐标的 x 值
  • y {number} 要长按的坐标的 y 值

模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约 600 毫秒)时脚本才会继续执行。

一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。

press(x, y, duration)

  • x {number} 要按住的坐标的 x 值
  • y {number} 要按住的坐标的 y 值
  • duration {number} 按住时长,单位毫秒

模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。

如果按住时间过短,那么会被系统认为是点击;如果时长超过 500 毫秒,则认为是长按。

一般而言,只有按住过程中被其他事件中断才会操作失败。

一个连点器的例子如下:

1//循环100次
2for (var i = 0; i < 100; i++) {
3    //点击位置(500, 1000), 每次用时1毫秒
4    press(500, 1000, 1);
5}

swipe(x1, y1, x2, y2, duration)

  • x1 {number} 滑动的起始坐标的 x 值
  • y1 {number} 滑动的起始坐标的 y 值
  • x2 {number} 滑动的结束坐标的 x 值
  • y2 {number} 滑动的结束坐标的 y 值
  • duration {number} 滑动时长,单位毫秒

模拟从坐标(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。

例如手指捏合:

1gestures([0, 500, [800, 300], [500, 1000]], [0, 500, [300, 1500], [500, 1000]]);