前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Auto.js中基于坐标的操作

Auto.js中基于坐标的操作

作者头像
越陌度阡
发布2022-08-20 12:52:27
3.3K0
发布2022-08-20 12:52:27
举报

以下这些函数有的需要安卓7.0以上,有的需要Root权限。要获取要点击的位置的坐标,可以在开发者选项中开启"指针位置"。

1. 设置屏幕的宽度和高度

setScreenMetrics(width, height)

width {number} 屏幕宽度,单位像素;

height {number} 屏幕高度,单位像素;

如果脚本运行时,屏幕宽度不一致会自动放缩坐标。例如:在1920*1080的设备中,某个操作的代码为:

代码语言:javascript
复制
setScreenMetrics(1080, 1920);

click(800, 200);

longClick(300, 500);

那么在其他设备上Auto.js会自动放缩坐标以便脚本仍然有效。例如:在540 * 960的屏幕中click(800, 200)实际上会点击位置(400, 100)。

2. 免Root手机的三种模拟点击方式

1. 模拟点击坐标,并返回是否点击成功;

click(x, y)

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

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

2. 模拟长按坐标,并返回是否成功;

longClick(x, y)

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

3. 模拟按住坐标,并返回是否成功;

press(x, y, duration)

只有按住操作执行完成时脚本才会继续执行。

3. 免root手机的三种模拟滑动方式

1. 模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功;

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

x1 {number} 滑动的起始坐标的x值;

y1 {number} 滑动的起始坐标的y值;

x2  {number} 滑动的结束坐标的x值;

y2 {number} 滑动的结束坐标的y值;

duration {number} 滑动时长,单位毫秒;

只有滑动操作执行完成时脚本才会继续执行。

2. 模拟手势操作;

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秒。

3. 同时模拟多个手势,常用于多手指运动;

 gestures([delay1, duration1, [x1, y1], [x2, y2], ...], ...)

每个手势的参数为[delay, duration, 坐标],delay为延迟多久(毫秒)才执行该手势;duration为手势执行时长;坐标为手势经过的点的坐标;其中delay参数可以省略,默认为0。

代码语言:javascript
复制
gestures(
    [0, 500, [230, 452], [230, 1000]],
    [0, 500, [500, 452], [500, 1000]],
    [0, 500, [755, 452], [755, 1000]]
);

4. 使用root权限实现模拟点击

RootAutomator是一个使用root权限来模拟触摸的对象,用它可以完成触摸与多点触摸,并且这些动作的执行没有延迟。

一个脚本中最好只存在一个RootAutomator,并且保证脚本结束退出他,可以在exit事件中退出RootAutomator。

代码语言:javascript
复制
var obj = new RootAutomator();

events.on('exit', function(){

  obj.exit();

});

1. 点击坐标位置;

RootAutomator.tap(x, y,[id])

x {number} 横坐标;

y {number} 纵坐标;

id {number} 多点触摸id,可选,默认为1,可以通过setDefaultId指定,用于区分多点触摸,不同的id表示不同的"手指";

如果不需要多点触摸,则不需要id这个参数。 多点触摸通常用于手势或游戏操作,例如模拟双指捏合、双指上滑等。

代码语言:javascript
复制
var finger = new RootAutomator();

// 让"手指1"点击位置(100, 100)
finger.tap(100, 100, 1);

// 让"手指2"点击位置(200, 200);
finger.tap(200, 200, 2);

finger.exit();

某些情况下可能存在tap点击无反应的情况,这时可以用 RootAutomator.press() 函数代替。

2. 模拟按下坐标位置,时长为duration毫秒;

RootAutomator.press(x, y, duration,[id])

x {number} 横坐标;

y {number} 纵坐标;

duration {number} 按下时长;

id {number} 多点触摸id,可选,默认为1;

3. 模拟长按坐标位置;

RootAutomator.longPress(x, y,[id])

x  {number} 横坐标;

y  {number} 纵坐标;

id  {number} 多点触摸id,可选,默认为1;

以上为简单模拟触摸操作的函数,如果要模拟一些复杂的手势,需要更底层的函数。

5. 使用root权限实现模拟滑动

1. 模拟从(x1, y1)到(x2, y2)的时间为duration毫秒的滑动;

RootAutomator.swipe(x1, x2, y1, y2, [duration, id])

x1 {number} 滑动起点横坐标;

y1 {number} 滑动起点纵坐标;

x2 {number} 滑动终点横坐标;

y2 {number} 滑动终点纵坐标;

duration {number} 滑动时长,单位毫秒,默认值为300;

id {number} 多点触摸id,可选,默认为1;

代码语言:javascript
复制
var obj = new RootAutomator();

events.on('exit', function(){
    obj.exit();
});

obj.swipe(100, 500, 500, 500,500,1);

6. 使用root权限实现模拟拖动

1. 模拟手指按下坐标位置;

RootAutomator.touchDown(x, y, [id])

x  {number} 横坐标;

y  {number} 纵坐标;

id {number} 多点触摸id,可选,默认为1;

2. 模拟移动手指到坐标位置;

RootAutomator.touchMove(x, y, [id])

x {number} 横坐标;

y {number} 纵坐标;

id {number} 多点触摸id,可选,默认为1;

3. 模拟手指弹起;

RootAutomator.touchUp([id])

id {number} 多点触摸id,可选,默认为1;

代码语言:javascript
复制
var obj = new RootAutomator();

events.on('exit', function () {
    obj.exit();
});

obj.touchDown(100, 400, 1);
obj.touchMove(600, 800, 1);
obj.touchUp(1);

7. 使用root权限点击和滑动的简单命令

1. 点击坐标位置;

Tap(x, y)

x, y {number} 要点击的坐标;

2. 滑动,从(x1, y1)位置滑动到(x2, y2)位置;

Swipe(x1, y1, x2, y2, [duration])

x1, y1 {number} 滑动起点的坐标;

x2, y2 {number} 滑动终点的坐标;

duration {number} 滑动动作所用的时间;

代码语言:javascript
复制
Tap(100,400)

sleep(5000);

Swipe(100, 600, 700, 600, 1000);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 设置屏幕的宽度和高度
  • 2. 免Root手机的三种模拟点击方式
  • 3. 免root手机的三种模拟滑动方式
  • 4. 使用root权限实现模拟点击
  • 5. 使用root权限实现模拟滑动
  • 6. 使用root权限实现模拟拖动
  • 7. 使用root权限点击和滑动的简单命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档