Autojs签到
最近学校每天都要求打卡,上午下午各打一次;我觉得本来就封校了,一直就在学校,风险不大,就没放在心上,结果好几次没打,最后直接给我扣分了(很烦);我想一劳永逸的解决这个问题,于是准备写个自动脚本,让他自己打
刚开始的方案是准备直接调小程序接口的(我们打卡是在微信小程序上打的),准备每次打卡的时候,去抓发送打卡信息的包,然后看一看对应数据格式,自己封一个包上去,每天定时发送,当作打卡;但是做起来就发现了问题,wx的加密解密格式我都不了解,而且认证用户也是个问题;后面再重新想办法,才想到可以直接在手机上运行脚本,定时执行就行了
安装环境
AutoJs 我用的4.1版本的,现在有三个版本,不同版本有区别
scrcpy 连接手机和电脑端的中介,好用的开源软件
- vscode 需要安装对应插件,商店搜索
hyb1996
安装就行
然后就是连接手机和电脑了,手机需要打开开发者模式,开启usb调试,开启AutoJs的无障碍服务和悬浮窗,打开scrcpy投屏,vscode打开服务端,然后autojs连接电脑,4.1版本需要查看pc端的ip,然后手机连接,连接后就能在线调试了
js基本语法
autojs是通过javascript编写的语法,就简单介绍下语法
变量
js变量通过var
来声明
1 | var a=1 |
可以在一条语句中声明许多变量
1 | var a=1, b='sss', c=a+b |
数据类型
js有多种数据类型,包括数值、字符串值、数组、对象
JavaScript 拥有动态类型,一个变量的类型取决于他被赋什么值,没赋值默认undefined
1 | var a = 7; // 数字 |
typeof 运算符返回变量或表达式的类型
语句里判断,循环和c差不多,数组,函数都类似
添加数组元素要调push
函数
代码
1 | var width = device.width; |
流程
如果处于锁屏状态,首先解锁
然后清理后台(主要是清理微信状态)
然后打开微信(在调app.launchApp("微信")
语句时,要注意有root权限,否则可能出现打不开的情况)
然后获取截图权限(这里会遇到问题,请求时候会弹出允许页面,这是程序会阻断,解决办法是新建一个线程,让新线程来点击允许)
然后就是逐个点击计划的位置,期间做了个判断,取出本机时间,判断到底是晨检还是午检,多选框是通过检测关键点的颜色是否匹配实现的
因为autojs对微信进行了部分屏蔽,没法通过id,desc,text等来选择控件,我实现时,一般点击操作都采用了相对位置,所以,以上代码基本不可移植
最后,把脚本加入每日任务,就完成了