一,Autox.js的安装
Autox.js是在GitHub上免费开源的一款软件,下载地址:kkevsekk1/AutoX: A UiAutomator on android, does not need root access(安卓平台上的JavaScript自动化工具) (github.com)
下载好之后在手机安装。
二,vscode的插件安装
我们可以安装好Autox.js的相关插件,使得我们可以直接在vscode里编写autox.js的代码,在配合上scrcpy软件,这样开发脚本十分直观方便。如图所示:
我们在插件商店那里,搜索Auto.js,如图,下载第一个和第四个。
三,scrcpy的下载
scrcpy同样是GitHub上的开源项目,下载地址:Genymobile/scrcpy: Display and control your Android device
下载好之后用数据线连接手机,如果需要鼠标直接操作手机,还需要打开手机开发者选项里的USB调试功能。
四,Autox.js与vscode的连接
我们在vscode里新建一个js文件,然后shift+ctrl+p弹出一些命令,我们找到Auto.js:strat sever,点击。
接着我们需要打开电脑的9317端口,找到电脑右下角wifi图标,点击右键,点击打开网络与internet设置——window防火墙——高级设置——入站规则——新建规则——端口——特定端口9317,然后命名,一直下一步就可以了。
然后我们点击Autox.js左上角,打开菜单,点击连接电脑,输入我们电脑的ip地址连接即可。或者, 我们在第一次按下Auto.js:strat sever时,电脑右下角会跳出一个窗口,我们点击show QR code,然后选择电脑ip地址,可生成二维码,我们可以扫码连接。我们同时也要保证手机与电脑在同一局域网中,通俗来讲就是连一个wifi。
五,相关代码:将代码写好后,shift+ctrl+p,点击Auto.js:save,就可以将代码保存到手机端了。
auto.waitFor();
console.show();
console.setSize(300,300);
console.setPosition(300, 1000);
console.log("ccit打卡开始");
var appName = "微信";
launchApp(appName);
text("微信").waitFor();
console.log("进入首页");
var widget = className("TextView").depth(13).findOne();
click(widget.bounds().centerX(),widget.bounds().centerY());
sleep(1000);
while(text('最近').exists()==false){
swipe((device.width)/4,(device.height)/4,(device.width)*3/4,(device.height)*3/4,1000);};
swipe((device.width)/4,(device.height)/4,(device.width)*3/4,(device.height)*3/4,1000);
text("最近").waitFor();
var widget1 = text('长工程校园打卡').findOne();
click(widget1.bounds().centerX(),widget1.bounds().centerY());
sleep(2000);
console.log('正在打卡——' )
click(534,709);
sleep(2000);
click(318,709);
sleep(2000);
press(115,1575,1000);
sleep(3000);
swipe(1064,2220,1664,500,2000);
sleep(2000);
click(108,610);
sleep(2000);
press(108,1338,1000)
sleep(2000);
click(108,2140);
sleep(2000);
swipe(1064,2220,1664,500,2000);
sleep(2000);
click(210,863);
sleep(2000);
click(210,1289);
sleep(2000);
click(210,1770);
sleep(2000);
swipe(1064,2220,1664,500,2000);
click(221,1200);
sleep(2000);
click(210,1562);
sleep(2000);
press(200,1800,1000);
sleep(10000);
click(228,2088);
sleep(2000);
click(712,1251);
console.log('打卡完成!')
六,改坐标
上面的代码是我针对我的手机像素坐标来写的,所以不同机型并不能通用,我们需要修改click后的坐标来使代码可以通用。
首先,我们打开手机的无障碍模式,打开显示指针功能。这样我们就可以看到我们点击手机的落点的坐标。所以,我们打开vscode同时使用scrcpy将手机投影到电脑,打开打卡小程序,代码中“正在打卡——”后的第一个click对应健康打卡按钮,后面的按钮,同学们针对该按钮在手机的坐标来改变click里的参数。swipe是模拟滑动,swipe(x1,y1,x2,y2,t),必须要注意的是x1,y1的坐标必须在小程序的蓝色部分,在白色的区域划不动。
七,日常实现
Autox.js保存的js文件右边的三个小点,点击,更多,定时任务,调到你想执行的时间,就欧克了。
脚本打卡仅适用于正常日常情况,有特殊情况还是需要报告。