关于auto.js
官方对于autojs的介绍如下
“一个支持无障碍服务的Android平台上的JavaScript IDE,其发展目标是JsBox和Workflow。同时有VS Code 插件可提供基础的在桌面开发的功能。”
据了解是一个大学生开发,现在作者已经暂时不对此进行维护了。作为一个开源作者,可能最痛恨就是自己的作品被人拿去作恶叭。
GitHub地址:auto.js
API文档:官方文档
初次尝试:
- 不知道是软件问题还是我的脚本使用的api问题,在安卓7.0以下系统运行会提示错误。所以,auto.js最好在7.0以上系统中使用
- 对比类似软件 如:按键精灵。auto基于控件为基本单位,所有操作是在控件上的,所以找到唯一的控件对象是一大关键。按键精灵则是基于坐标的,所以在不同分别率和不同手机上可能会出现未知的bug。
- 一般控件操作可以参照api文档的说明来进行,逻辑部分可以使用js语法来写
代码总结:
在我的构思中,需要实现以下几个功能:
1.点亮屏幕。2.打开钉钉软件。3.判断时间段,时间段内打卡。4.切换界面,并打卡
代码实现如下:
1.判断是否点亮,如果屏幕未亮,进行点亮
if(!device.isScreenOn()){
log("未唤醒");
device.wakeUpIfNeeded();
keepDrow();
}
2.打开软件
log("第一步,打开程序")
launchApp("钉钉")
3.判断时间段 我的设置是周一到周五打卡,在8点38分后进行上班打卡
var curr_time = new Date();
var now_Hours = curr_time.getHours();
var now_Minutes = curr_time.getMinutes();
var now_day = curr_time.getDay();
if(now_day < 6){
log("工作日")
log("当前系统时间:"+now_Hours+ +now_Minutes)
if (now_Hours == 8 && now_Minutes >= 38)
{
log("正确的时间,开始进行打卡")
}else{
log("not this time, wait for 5 mintes")
sleep(1000 * 60 * 5)
checkIsNow()
}
}else{
log("非工作日")
}
4.切换界面,因为好几个界面,思路都是一样,找到对应的空间,并执行点击方法
work_button = desc("工作").findOnce();
if (work_button == null){
log("找不到工作");
sleep(1000);
}else{
log("找到工作");
work_button.click();
sleep(1000);
}
暂时就到这里,基于控件的auto.js在大部分场景还是很舒服的,但是有些动态加载的页面就不是很好使用。需要坐标进行辅助