使用AutoJs实现钉钉自动打卡

码字不易,麻烦点点赞了!!!!

本脚本基于AutoJS4.1.1,在美图T8手机上面上开发,安卓版本为7.0,钉钉版本6.0.20。

硬件要求:闲置安卓手机一部。务必是安卓7.0以上,要不然无法执行autojs。

环境要求:1、有网络连接  2、打开GPS  3、取消手机锁屏,即上划无需密码即可解锁手机 4、授予AutoJS无障碍权限

注意:手机无需root

在AutoJS应用内将脚本添加为上下班两个定时任务,实现工作日自动打卡并发送打卡结果到自己的邮箱。

AutoJS软件链接参考我这篇文章:https://www.fang1688.cn/study-code/2533.html
Auto.js 4.1.1 Alpha2 免费版下载地址:下载请关注下方公众号,“优派编程”,回复暗号“112”,获取下载链接!
脚本如下:

//打卡类型(上班打卡/下班打卡)
var punchType = "下班打卡";

//设置随机延时(分钟),避免所有打卡时间点都一样
var randomSleepMinutes = 10;

//发送打卡结果到此邮箱(换成自己的邮箱)
var emailAddress = "XX@qq.com";

/**
 * 示例:swipe(539, 1918, 539, 1100, 200);
 * 表示从位置(539, 1918)滑动到位置(539, 1100), 持续2秒
 * swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
 * 上滑起始和中止的坐标可以根据手机分辨率自己设置
 * swipeSpeed=200适用于上滑解锁美图系统,其他系统的swipeSpeed需要自己测试出来
 * 起始位置坐标可以通过打开手机的调试模式,然后选择开发者选项>开启>指针位置(选择打开)
 */
var swipeStartX = 539;
var swipeStartY = 1918;
var swipeEndX = 539;
var swipeEndY = 1100;
var swipeSpeed = 200;

//脚本执行时保持屏幕常亮,默认15分钟
var keepScreenOnMinutes = 15;

//输出指定日志文件
console.setGlobalLogConfig({
  file: "/sdcard/auto_daka_log.txt",
});

//记录当前时间
var date = new Date();
console.log(
  "当前日期:" +
    date.getFullYear() +
    "/" +
    (date.getMonth() + 1) +
    "/" +
    date.getDate()
);
console.log(punchType + "开始");

//设置随机延时
var sleep_time = random(0, randomSleepMinutes * 60 * 1000);
console.log("延时时间:" + sleep_time / 1000 + "s");
sleep(sleep_time);

//检测网络状态
internetCheck();

//检测GPS状态
gpsCheck();

//进入打卡流程
punchTheClock();

function punchTheClock() {
  //唤醒手机
  device.wakeUp();
  sleep(3 * 1000);

  //判断屏幕是否唤醒成功
  if (!device.isScreenOn()) {
    console.error("屏幕未唤醒,退出脚本");
    exit();
  }

  //上滑解锁
  sleep(3 * 1000);
  swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
  sleep(3 * 1000);

  //脚本执行时保持屏幕常亮
  device.keepScreenOn(keepScreenOnMinutes * 60 * 1000);

  //返回桌面
  home();
  sleep(5 * 1000);

  //关闭钉钉(这个关闭操作根据自己设备具体情况配置)
  console.log("关闭钉钉");
  openAppSetting(getPackageName("钉钉"));
  sleep(5 * 1000);
  click("强行停止");
  sleep(5 * 1000);
  click("确定");
  sleep(5 * 1000);

  //打开钉钉
  console.log("打开钉钉");
  launchApp("钉钉");
  sleep(10 * 1000);

  //判断是否已登录
  if (id("tv_welcome_name").exists()) {
    console.error("钉钉未登录");
    exit();
  }

  //点击忽略更新(如果有)
  if (click("暂不更新")) {
    console.log("点击暂不更新");
  }
  sleep(5 * 1000);

  //点击工作台
  console.log("点击工作台");
  clickMessage("工作台");
  sleep(10 * 1000);

  //点击考勤进入打卡页面
  console.log("点击考勤打卡");
  clickMessage("考勤打卡");
  sleep(10 * 1000);

  //判断是否休息日
  if (className("android.view.View").text("今日休息").exists()) {
    console.log("今日休息");
    exit();
  }

  //点击打卡
  console.log("点击" + punchType);
  clickMessage(punchType);
  sleep(10 * 1000);

  //点击 查看打卡结果
  console.log("点击查看打卡结果");
  clickMessage("查看打卡结果");
  sleep(10 * 1000);

  //上滑
  swipe(swipeStartX, swipeStartY, swipeEndX, swipeEndY, swipeSpeed);
  sleep(5 * 1000);

  //截图
  console.log("截图");
  if (!requestScreenCapture()) {
    console.error("请求截图失败");
    exit();
  }
  var img = captureScreen();
  images.saveImage(img, "/sdcard/result.png");
  sleep(5 * 1000);

  //发送邮件,唤起选择发送邮件应用的界面
  console.log("发送邮件");
  app.sendEmail({
    email: [emailAddress],
    subject: punchType + "成功",
    text: punchType + "成功",
    attachment: "/sdcard/result.png",
  });
  sleep(5 * 1000);

  //点击应用名称选择邮箱。根据自己情况配置,我用的美图系统自带邮箱
  clickMessage("电子邮箱");
  sleep(5 * 1000);

  //点击发送邮件
  //if (className("android.widget.Button").desc("发送").findOnce().click()) {
   // console.log("邮件发送成功");
  //} else {
    //console.error("未找到邮件发送按钮");
    //exit();
	//console.log("通过坐标点击发送");
	//click(987,144)
 // }
//通过坐标点击发送(我这边调试不通,暂时通过坐标方式去点击发送,实现效果一样)
  click(987,144)
  sleep(5 * 1000);

  //关闭钉钉(这个关闭操作根据自己设备具体情况配置)
  console.log("关闭钉钉");
  openAppSetting(getPackageName("钉钉"));
  sleep(5 * 1000);
  click("强行停止");
  sleep(5 * 1000);
  click("确定");
  sleep(5 * 1000);

  //返回主页
  home();
  sleep(1 * 1000);

  //关闭屏幕常亮
  console.log("关闭屏幕常亮");
  device.cancelKeepingAwake();

  console.log("打卡完成");
  exit();
}

//判断网络情况,如果没有网络,结束脚本运行
function internetCheck() {
  var url = "m.baidu.com";
  var res = http.get(url);
  if (res.statusCode != 200) {
    console.error("网络不可用,无法打卡");
    exit();
  }
}

//判断GPS是否可用,如果不可用,结束脚本运行
function gpsCheck() {
  importClass(android.location.LocationManager);
  importClass(android.content.Context);
  var locationManager = context.getSystemService(Context.LOCATION_SERVICE);
  if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    console.error("GPS不可用,无法打卡");
    exit();
  }
}

//根据控件文字点击,如果点击失败,则说明打卡流程无法正常进行,结束脚本运行
function clickMessage(message) {
  var n = 3;
  var logo = false;
  while (n--) {
    if (click(message)) {
      logo = true;
      break;
    }
    sleep(3 * 1000);
  }
  if (logo == false) {
    console.error("点击" + message + "出错");
    exit();
  }
}
 

 


本期内容就到这里啦~以上内容均可在 方包博客http://fang1688.cn 网站直接搜索名称访问哦。欢迎感兴趣的小伙伴试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

欢迎大家加入方包的优派编程学习圈子,和多名小伙伴们一起交流学习,向方包 1 对 1 提问、跟着方包做项目、领取大量编程资源等。Q群891029429欢迎想一起学习进步的小伙伴~

另外方包最近开发了一款工具类的小程序「方包工具箱」,功能包括:抖音、小红书、快手去水印,天气预报,小说在线免费阅读(内含上万部热门小说),历史今天,生成图片二维码,图片识别文字,ai伪原创文章,数字摇号抽奖,文字转语音MP3功能...

送福利!关注下方的公众号:优派编程回复资料,即可获得软件app下载资源和python、java等编程学习资料!

   
点击卡片关注「优派编程」
定期分享 it编程干货

 ⬇️ 点击链接阅读原文直达 方包博客

分享到:
赞(9)

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

免责声明:本站为非盈利性个人博客,博客所发布的一切源码、软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。访问和下载本站内容,说明您已同意上述条款。本站不贩卖软件,所有内容不作为商业行为。

如果有侵犯版权请发送邮箱至619018020@qq.com,我们会在24小时之内处理。

Copyright © 2019-2021知识学堂