企业微信打卡脚本教程

手机端打卡脚本

利用脚本实现手机端的企业微信或是微信小程序自动打卡。

环境搭建

  • 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的区域,我可以写一段:

1
click(330,1300);

点击的就是330,1300这个点的位置,在我需要点击的范围内。

滑行问题

滑行(手势)

1
gestures([350,[300, 1400],[300,400]]);

或者

1
swipe(500, 1000, 500, 10, 2000);

各项参数的意义已经在滑动解锁问题中解释,在gestures中,第一个350是指的滑行间隔350ms,如果你要写多指滑行,采用:

1
2
3
4
//三指滑行,间隔350ms
gestures([350,[300, 1400],[300,400]
350,[300, 1400],[300,400]
350,[300, 1400],[300,400]]);

点击问题

  • 可以采用上文提到的按键无法识别问题
  • 可以使用如下语法
    1
    click("按键名称");
    ………………

更多基本语法请参照官方给的教程文档,十分详细,希望你可以写出更多功能,更有用的各类脚本。