Featured image of post 利用 Auto.Js 实现自动健康打卡

利用 Auto.Js 实现自动健康打卡

开发背景

应学校要求,需要全年打卡,但难免会有忘记的时候。

偶然看到了 Autojs,可以通过 Autojs 的模拟点击和定时任务来实现自动健康打卡。

软件安装

由于 Auto.js 已经不再维护了,Auto.js Pro 版的需要付费,我这里使用的是AutoX.js

使用教程

  1. 给予软件所需要的权限,如无障碍以及悬浮窗权限。
  2. 导入脚本。
  3. 设置定时任务。

Code

 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
82
83
84
85
86
87
88
// 检测无障碍是否开启
auto.waitFor();

// 解锁设备
if (!device.isScreenOn()) {
device.wakeUp(); // 唤醒设备
sleep(500);
swipe(500, 2000, 500, 1000, 210); // 向上滑动解锁
sleep(500);
let password = "0000"; // 这里输入你手机的密码
for (let i = 0; i < password.length; i++) {
let p = text(password[i].toString()).findOne().bounds(); //
click(p.centerX(), p.centerY()); //
sleep(100);
}
}

// 显示控制台
console.show();

// 控制台位置
console.setPosition(390, 500);
console.log("**\*** 打卡开始 **\***");

// 打开微信
launchApp("微信");
sleep(1000);

// 检测是否为首页
while (!text("微信").exists()) {
back();
sleep(1000);
}

text("微信").waitFor();
let weixin = className("TextView").depth(13).findOne().bounds();
click(weixin.centerX(), weixin.centerY());
console.log("正在打卡(1/8)...");

// 开始打卡
text("需要点击的模块").waitFor();
let button1 = text("需要点击的模块").findOne().bounds();
click(button1.centerX(), button1.centerY());
console.log("正在打卡(2/8)...");

text("素养成长").waitFor();
let button2 = text("素养成长").findOne().bounds();
click(button2.centerX(), button2.centerY());
console.log("正在打卡(3/8)...");

sleep(1000);
click(300, 2300);
console.log("正在打卡(4/8)...");

text("学生疫情防控").waitFor();
let button3 = text("学生疫情防控").findOne().bounds();
click(button3.centerX(), button3.centerY());
console.log("正在打卡(5/8)...");

text("每日健康档案").waitFor();
let button4 = text("每日健康档案").findOne().bounds();
click(button4.centerX(), button4.centerY());
console.log("正在打卡(6/8)...");

// 输入体温
let temperature = (36 + (Math.random() \* 0.3 + 0.4)).toFixed(1);
sleep(5000);
setText(0, temperature);
console.log("正在打卡(7/8)...");
// 提交打卡
let button5 = text("提交").findOne().bounds();
click(button5.centerX(), button5.centerY());
console.log("正在打卡(8/8)...");

sleep(3000);

while (!text("微信").exists()) {
back();
sleep(1000);
}
console.log("**\*** 打卡成功 **\***");
sleep(1000);

// 隐藏控制台
console.hide();

// 结束进程
exit();

特别注意

以上仅特定打卡方式可使用,实现原理基本一样,通过识别模块或文字来模拟点击。具体可以根据自己的需求去修改,可以参考 AutoX.js 文档