-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathscript.js
More file actions
134 lines (115 loc) · 3.39 KB
/
script.js
File metadata and controls
134 lines (115 loc) · 3.39 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
(() => {
const backToMain = function() {
// 返回到主页面
// todo:如果在其他页面,一直摁返回,可能返回不到这个页面?
const main = "org.xinkb.blackboard.android.ui.activity.MainActivity"
let backLimit = 8 // 为了不要死循环
while (currentActivity() !== main && backLimit !== 0) {
back()
backLimit--
sleep(500)
}
}
const endScript = function() {
// 结束程序的时候运行这个
sleep(1000)
// 退出到桌面
backToMain()
home()
console.log("=== end ===")
// 结束脚本的运行
exit()
}
const punch = function(name, needCheck) {
let btn = text(name).findOne(2000)
if (btn) {
btn.click()
console.log(name + " 已点击")
sleep(1000)
punch("确定", false)
endScript()
} else {
console.log("找不到 " + name + " 按钮");
}
}
const toXiaoMain = function() {
const xiao = "org.xinkb.blackboard.android"
if (currentPackage() !== xiao) {
app.launchPackage(xiao)
console.log("opened xiao");
} else {
backToMain()
}
}
const unlockScreen = function() {
const max_try = 10
const keyguard_manager = context.getSystemService(context
.KEYGUARD_SERVICE);
let isLocked = () => keyguard_manager.isKeyguardLocked();
while (isLocked() && max_try !== 0) {
max_try--
sleep(500)
console.log("unlocked screen");
gesture(320, [394, 1536], [680, 320]) // 我也不知道为啥持续时间要是320
}
if (isLocked()) {
console.log("cant unlock screen")
endScript()
}
}
const waitForLoacte = function() {
const waitTime = 5
while (text("定位中").findOne(1000) && waitTime !== 0) {
console.log("-- 定位中 --")
sleep(1000)
waitTime--
}
}
const enterThePunch = function() {
// 1. 点击教师考勤
let btn = text("教师考勤").findOne(6000).parent() // 等6秒,是为了防止冷启动需要等很久
if (btn) {
btn.click()
console.log("教师考勤 已点击")
} else {
console.log("*** 找不到 教师考勤 按钮");
endScript() // 这里找不到就结束
}
// 2. 点击考勤打卡
btn = text("考勤打卡").findOne(3000).parent()
if (btn) {
btn.click()
console.log("考勤打卡 已点击")
} else {
console.log("*** 找不到 考勤打卡 按钮");
endScript()
}
}
// ========== 主函数从此处开始 ==============
device.wakeUp() // 开启屏幕,不然看不到在做啥
console.show() // 打开控制台的输出,到公司后可以看一下之前的打卡记录
// 判断有没有锁屏,有的话就解锁
unlockScreen()
console.log("=== xiao start ===")
// 为了避免被反作弊系统搞,等个0到2分钟的随机时间
const sleepTime = random(0, 120000)
// 写毫秒的话反应不过来要等多久。。
console.log("random sleep " + Math.floor(sleepTime / 1000) + " s")
device.keepScreenOn(sleepTime)
// sleep(sleepTime)
console.log("random sleep end")
// 1. 开启晓黑板
toXiaoMain()
// 2. 进入打卡页面
enterThePunch()
waitForLoacte()
// 3. 上班打卡
punch("上班打卡")
// 4 下班打卡
punch("下班打卡")
// 5. 更新下班打卡
punch("更新打卡")
// 如果啥按钮都没有,就跑路
console.log("nothing to punch")
endScript()
})()