钉钉打卡脚本(基于auto.js)开发总结

关于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在大部分场景还是很舒服的,但是有些动态加载的页面就不是很好使用。需要坐标进行辅助

你可能感兴趣的:(开发_auto.js)