手机端打卡脚本
利用脚本实现手机端的企业微信或是微信小程序自动打卡。
环境搭建
1.下载Auto.js软件,官方网站是要付费的,但是一般的下载网站上是免费的,官网功能稍微多一点,这里不论是官网还是下载网站上的软件都可以用。软件如图:

2.下载vscode,在拓展组件里搜索autojs,安装如图所示的插件,此插件是连接手机和电脑的,用电脑写一些脚本比手机上写方便,电脑端也可以直接测试脚本。写完之后也可以上传到手机端。

3.然后建一个.js文件,用vsc打开,按住ctrl+shift+p,输入auto,找到autojs:Start Sever,这时右下角会弹出一个服务开启的提示,此时便可以开始连接手机了。
4.此时打开你的手机上的autojs软件界面:
点击右上角的三条线出现侧边栏,选择连接电脑,这里要你输入ip地址,ip地址怎么查(win+r - 输入命令行ipconfig),如果你是第一次使用,建议连接时,可以看看vsc界面的右下角,连接成功的话会有提示。autojs软件的使用时需要无障碍设置,它会自动弹出来,权限给它就行。 这样你就搭好了一个最基本的环境。
代码撰写
如果你会一点点前端,看看app里面的教程应该就能自学。
这里提供了一般的打卡代码,以及讲解如何使用和一些问题。
微信小程序健康打卡
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
| "auto";
function password_input() { var password = "****" for(var i = 0; i < password.length; i++) { var p = text(password[i].toString()).findOne().bounds(); click(p.centerX(), p.centerY()); sleep(100); } }
function unlock() { if(!device.isScreenOn()) { device.wakeUp(); sleep(500); swipe(400,2000,400,800,201); password_input(); } } unlock(); sleep(1000); launchApp("微信"); sleep(1000); toast('微信已打开'); gestures([350,[300, 400],[300,1400]]); sleep(1000); click("畅行码"); sleep(1500); click("我的"); sleep(1500); click("健康打卡"); sleep(1000): gestures([350,[300, 1400],[300,400]]); sleep(1000); gestures([350,[300, 1400],[300,400]]); click("提交");
|
企业微信健康打卡
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
| auto;自动打开无障碍模式
解锁屏幕 function unlock() { if(!device.isScreenOn()) { device.wakeUp(); sleep(500); swipe(500,2000,500,1000,210); sleep(500) var password = ******* 这里输入你手机的密码 for(var i = 0; i password.length; i++) { var p = text(password[i].toString()).findOne().bounds(); click(p.centerX(), p.centerY()); sleep(100); } } } unlock(); sleep(1000); launchApp(企业微信);打开微信 sleep(1000); click(工作台); sleep(300); click(纺大畅行码); sleep(300); className(android.view.View).text(我的).findOne().parent().click() sleep(1000); className(android.view.View).text(健康打卡).findOne().parent().click() sleep(1000); swipe(500, 1000, 500, 10, 2000); sleep(1000) swipe(500, 1000, 500, 10, 2000); sleep(1000); swipe(500, 1000, 500, 10, 2000); sleep(1000); swipe(500, 1000, 500, 10, 2000); sleep(1000); className(android.widget.Button).findOne().click() sleep(3000);
|
如何使用以及电脑端测试
测试
电脑端写好的js代码,ctrl+shift+p,选择auto:run,可以调试(连接手机之后,手机上直接会运行你写的代码),或者按F5也可以运行。
使用代码
在autojs里新建文件(点击蓝色加号),写好代码之后,点击保存,播放键按钮即是运行,如果想定时或者循环运行,点击右边三个点,选择更多,里面有定时运行,可以设置脚本运行的具体时间。
问题解决
悬浮窗
在autojs软件里打开悬浮窗,会出现一个图标,点击之后
其中,蓝色按钮,可以显示你当前界面的可用控件,点击选择控件之后,你可以选择查看控件信息,里面的bounds指的是这个位置的具体像素位置,id指的是控件的地址,可以直接调用id来实现控件操作。 1
| id("填入id").findOne().click();
|
你也可以直接点击生成代码,选择一个操作便能自动生成代码。(有些控件是不能滑动的所以会提示失败)
手机自动解锁失败
1.忘记输入密码
你需要在代码里面输入自己的手机号码
滑动解锁问题
在unlock函数代码中的语句 1
| swipe(500,2000,500,1000,210);
|
其中数字代表的含义依次是:初始X坐标,初始Y坐标,终点X坐标,终点Y坐标,滑行速度 因为不同手机的大小不用,所以改一改坐标就可以解决,使用MIUI系统的用户,速度不能低于205
按键无法识别
你可以采用粗暴一点的方法解决,在查看控件的具体像素位置,选择一个点,例如:我需要点击的范围是300-350,1200-1400的区域,我可以写一段:
点击的就是330,1300这个点的位置,在我需要点击的范围内。
滑行问题
滑行(手势)
1
| gestures([350,[300, 1400],[300,400]]);
|
或者
1
| swipe(500, 1000, 500, 10, 2000);
|
各项参数的意义已经在滑动解锁问题中解释,在gestures中,第一个350是指的滑行间隔350ms,如果你要写多指滑行,采用:
1 2 3 4
| gestures([350,[300, 1400],[300,400] 350,[300, 1400],[300,400] 350,[300, 1400],[300,400]]);
|
点击问题
- 可以采用上文提到的按键无法识别问题
- 可以使用如下语法 ………………
更多基本语法请参照官方给的教程文档,十分详细,希望你可以写出更多功能,更有用的各类脚本。