Auto.js自动化脚本开发

准备工具

Auto.js手机app

电脑开发推荐使用VScode

开发步骤

VScode编辑js脚本文件

VScode点击查看>命令面板输入auto.js:start server启动服务;手机打开auto.js然后左滑打开连接电脑,输入电脑的ip地址(局域网地址),连接成功后VScode右下角会有弹出连接成功显示;电脑按F5键就可以将当前活动页代码发送到手机上执行。

操作命令

VScode:

  • auto.js:Start Server - 启动远程操作服务
  • auto.js:Stop Server - 停止远程操作服务
  • auto.js:Run / F5 - 在手机上运行当前活动页程序
  • auto.js:Stop - 在手机上停止当前活动页脚本
  • auto.js:StopAll - 停止手机上运行的所有脚本
  • auto.js:Save - 将当前文件保存到手机默认目录下
  • auto.js:Run Project - 在手机上运行项目
  • auto.js:Save Project - 在手机上保存项目

常用函数

详细参考命令到Auto.js文档

注意:此处仅仅介绍本人用过的命令

一般全局函数

  • sleep(n) - 暂停运行n毫秒的时间
  • home() - 相当于点击安卓的home按键
  • back() - 相当于点击安卓的back按键
  • toast(message) - 以气泡显示信息message几秒,安卓一般为2秒
  • exit() - 立刻停止脚本运行
  • setScreenMetrics(x, y) - 设置屏幕分辨率

点击

  • click(x, y) - 点击指定的像素点
  • click(text[, i]) - 点击文本,入过有多个,则点击第i个,i从0开始数,不指定则会将所有的文本点击一次,返回是否全部成功
  • while(!click("扫一扫")); - 点击扫一扫,从文本处向其父视图寻找,直至发现一个可点击的部件为止。
  • swipe(x1, y1, x2, y2, duration) - 从(x1, y1)滑动到(x2, y2),持续时间为duration毫秒
  • press(x, y, duration) - 长按(x, y)点,持续时间为duration毫秒

应用

  • launchApp(appName) - 指定应用名启动应用,如“支付宝”
  • launch(packageName) - 指定应用的包名启动应用,如“com.eg.android.AlipayGphone”,该方法启动应用更快

图片和颜色

  • requestScreenCapture([landscape]) - 获取截图权限,返回是否具有权限;landscape为false, 则表示竖屏截图; true为横屏截图;该方法只用执行一次
  • captureScreen() - 截取屏幕,返回一个image对象
  • images.pixel(image, x, y) - 返回image图片(x, y)位置的ARGB值,用0xAARRGGBB表示
  • images.findColor(image, color, options) - 区域找色,image中找color颜色,options为一个类似python字典的对象,region为区域,指定左上角x,y和区域的宽和高,threshold为颜色相似度,0为相同,255为所有颜色都相似,默认为4
  • images.findColorInRegion(img, color, x, y[, width, height, threshold]) - 用法同findColor
  • images.findImage(img, template[, options]) - 以图找图,img为原图,template为模板图,options和findColor用法相似;threshold图片相似度,取值范围为0~1的浮点数。默认值为0.9。region找图区域,用法和findColor一样,level默认不设置,会自动调整图片大小。
  • images.findImageInRegion(img, template, x, y[, width, height, threshold]) - 用法和findImage一样
  • colors.toString(color) - 将颜色值转换为字符串

代码示例

监控我的支付宝蚂蚁庄园是否有小鸡偷吃的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"auto";
// 设置分辨率
setScreenMetrics(1080, 1920);
// 获取竖屏截图权限
requestScreenCapture(false);

main();

function main(){
app.launch("com.eg.android.AlipayGphone");
sleep(2000);
// 判断是否是主页
while(!check_alipay_home()){
back();
sleep(1000);
};
// check_ant_home();
watched_me();
}

// 检查并进入支付宝首页
function check_alipay_home(){

var scan = text('首页').findOnce();
var pay = text('理财').findOnce();
if(scan != null && pay != null){
while(!click("首页"));
return true
}else{
return false
}
}

// 判断是否进入了蚂蚁界面
function check_ant_home(){
while(!click("蚂蚁庄园"));
sleep(800);
while(true){
var img = captureScreen();
var color1 = images.pixel(img, 100, 200);
var colors1 = colors.toString(color1);
if(colors1 == "#ffb7eaff"){
sleep(500);
}
else{
sleep(500);
break;
}
}
}

// 监控我的蚂蚁庄园
function watched_me(){
while(true){
// 进入蚂蚁庄园主页
check_ant_home();
// 获取截图
var img = captureScreen();
// 判断左右是否有小鸡
var color1 = images.pixel(img, 400, 1300);
var color2 = images.pixel(img, 850, 1300);
var colors1 = colors.toString(color1);
var colors2 = colors.toString(color2);
// 如果有小鸡来了,播放歌曲后退出
if(colors1=="#ff000000" || colors2=="#ff000000"){
media.playMusic("/storage/emulated/0/MIUI/.ringtone/五月天 我不愿让你一个人_&_5b2e2bd6-6230-45c4-a1a5-e2a6bcdcd4b2.mp3");
sleep(30000);
exit();
}
toast(colors1 + colors2)
back();
sleep(700);
}
}

监控蚂蚁庄园前三名是否有小鸡偷吃的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"auto";
// 设置分辨率
setScreenMetrics(1080, 1920);
// 获取竖屏截图权限
requestScreenCapture(false);

main();


function main(){
app.launch("com.eg.android.AlipayGphone");
sleep(2000);
// 判断是否是主页
while(!check_alipay_home()){
back();
sleep(1000);
};
// check_ant_home();
watched_other();
}

// 检查并进入支付宝首页
function check_alipay_home(){

var scan = text('首页').findOnce();
var pay = text('理财').findOnce();
if(scan != null && pay != null){
while(!click("首页"));
return true
}else{
return false
}
}

// 判断是否进入了蚂蚁界面
function check_ant_home(){
while(!click("蚂蚁庄园"));
sleep(800);
while(true){
var img = captureScreen();
var color1 = images.pixel(img, 100, 200);
var colors1 = colors.toString(color1);
if(colors1 == "#ffb7eaff"){
sleep(500);
}
else{
sleep(500);
break;
}
}
}

function watched_other(){
check_ant_home();
while(true){
// 点击小鸡庄园的好友
click(156,1721);
sleep(1000);
// 截图
var img = captureScreen();
// 监控第一位好友
var color1 = images.pixel(img,940,1380);
var colors1 = colors.toString(color1);
// 监控第二位好友
var color2 = images.pixel(img,940,1570);
var colors2 = colors.toString(color2);
// 监控第三个好友
var color3 = images.pixel(img,940,1760);
var colors3 = colors.toString(color3);

// 判断是否有小鸡来了,有小鸡来了像素点的值为#ff333333
if(colors1=="#ff333333" ||colors2=="#ff333333" ||colors3=="#ff333333" ){
media.playMusic("/storage/emulated/0/MIUI/.ringtone/五月天 我不愿让你一个人_&_5b2e2bd6-6230-45c4-a1a5-e2a6bcdcd4b2.mp3");
sleep(30000);
exit();
}
toast(colors1 + colors2 + colors3)
back();
sleep(1000);
}
}