当前位置:   article > 正文

Auto.Js 第三章:坐标、控件 - 模拟真人操作_autojs gesture

autojs gesture

教程基于Auto.js 4.0.1版本

目标:模拟真人手势操作

对手机的操作存在几种方式:

  1. 点击
  2. 长按
  3. 滑动
  4. 按实体按键

后面的是衍生的,并不是主要操作。
5. 多击
6. 多手势

关于控件:可以通过控件拿到坐标,再偏移坐标获得我们想要做的手势。

使用坐标完成手势操作

核心内容
坐标 (x,y):屏幕上任意一个点的x轴和y轴。原点(0,0)在左上角。从左往右 x轴越来越大。从上往下 y轴越来越大。1080*1920分辨率的手机屏幕中,左上角(0,0),右上角(1080,0),左下角(0,1920),右下角(1080,1920)。
手势:点击、长按、滑动、连续点击、多个地方同时点击、多个地方同时滑动都是手势。坐标可以决定手势的位置,包括起始位置、中间位置(可以有多个)、终点位置。
手势时长:和名字一样,很多手势都是有时间限制的,按下超过1秒判断为长按,按下0.1秒(100ms)判断为点击。
设置分辨率

setScreenMetrics(width, height)
width <number> 屏幕宽度,单位像素
height <number> 屏幕高度,单位像素
设置脚本坐标点击所适合的屏幕宽高。如果脚本运行时,屏幕宽度不一致会自动放缩坐标。

设置分辨率可以让同样的坐标不同分辨率的设备上操作位置相同

点击

可以使用以下函数:
1、需要无障碍权限(Android 7.0):click(x, y) press(x, y, duration)
2、需要root(兼容低版本安卓): Tap(x, y) RootAutomator.tap(x, y[, id]) RootAutomator.press(x, y, duration[, id])
RootAutomator.touchDown(x, y[, id]) RootAutomator.touchMove(x, y[, id]) RootAutomator.touchUp([id]) 使用Shell命令

初级教程只讲无障碍,不讲root。
click
代码:

// 点击(x,y)为(400,500)的坐标位置
click(400,500);
  • 1
  • 2

运行结果:一闪而过,点击了一下 x轴为400,y轴为500的位置。
在这里插入图片描述
点击时的截图
在这里插入图片描述
press
时间参数需要很小,最好小于10,不然可能会被判定为长按。官方的longClick()函数的值约为600。

只有在长按执行完成(大约600毫秒)时脚本才会继续执行。

代码:

// 按下(x,y)为(500,500)的位置,按下去的时间为 1毫秒
press(500,500,1);
  • 1
  • 2

运行结果:
插入图片描述

函数:

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

press(x, y, duration)#
x <number> 要按住的坐标的x值
y <number> 要按住的坐标的y值
duration <number> 按住时长,单位毫秒
模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。
如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。
一般而言,只有按住过程中被其他事件中断才会操作失败。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
长按

可以使用以下函数:
1、需要无障碍权限(Android 7.0): longClick(x, y) press(x, y, duration)
2、需要root(兼容低版本安卓): RootAutomator.press(x, y, duration[, id]) RootAutomator.longPress(x, y[\, id])
RootAutomator.touchDown(x, y[, id]) RootAutomator.touchMove(x, y[, id]) RootAutomator.touchUp([id]) 使用Shell命令

longClick
长按,和click很像,点击时间更长,其他都一样。
代码:

// 长按(约为600毫秒)(x,y)为(500,800)的坐标位置
longClick(500,800);
  • 1
  • 2

运行结果:
在这里插入图片描述

点击时的截图
在这里插入图片描述
press
时间参数需要稍大,不然会被判定为点击。
代码:

// 按下(x,y)为(500,500)的位置,按下去的时间(第三个参数)为 500毫秒
press(300,500,500);
  • 1
  • 2

结果:
由于长按的位置没有可以长按的操作,所以没有触发其他事件。
在这里插入图片描述

函数:

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
滑动

可以使用以下函数:
1、需要无障碍权限(Android 7.0):swipe(x1, y1, x2, y2, duration) gesture(duration, [x1, y1], [x2, y2], ...) gestures([delay1, duration1, [x1, y1], [x2, y2], ...], [delay2, duration2, [x3, y3], [x4, y4], ...], ...)
2、需要root(兼容低版本安卓):Swipe(x1, y1, x2, y2, [duration]) RootAutomator.swipe(x1, x2, y1, y2[, duration, id]) RootAutomator.touchDown(x, y[, id]) RootAutomator.touchMove(x, y[, id]) RootAutomator.touchUp([id]) 使用Shell命令

swipe
代码:

// 从(500,800)的位置滑动到(500,300)的位置,使用1000毫秒(1秒)的时间来完成滑动
swipe(500,800,500,300,1000);
  • 1
  • 2

结果:在这里插入图片描述

gesture
代码:

// 从(500,800)的位置滑动到(500,300)的位置,再移动到(200,300)的位置,使用1000毫秒(1秒)的时间来完成滑动,会被Autojs进行优化
gesture(1000,[500,800],[500,300],[200,300]);
  • 1
  • 2

结果:在这里插入图片描述

函数:

swipe(x1, y1, x2, y2
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/266528
    推荐阅读
    相关标签
      

    闽ICP备14008679号