使用方法:
1.需要有固定手机设备放在能打卡的地方,打开定位。
2.需要有adb环境,手机跟adb之间建立连接。
3.自己修改脚本里面的坐标。
代码如下:
import os import time from apscheduler.schedulers.blocking import BlockingScheduler from datetime import datetime def interval_time(date): """获取当前时间距离指定时相差的秒值 :param date: 格式为:"2021-07-28 18:25" :return: 返回秒 """ now_time = int(time.time()) # 触发时间精确到分 trigger_time = int(time.mktime(time.strptime(date, "%Y-%m-%d %H:%M"))) if trigger_time > now_time: seconds = trigger_time - now_time print("相差秒值是:{}".format(seconds)) return seconds else: print("输入日期小于当前时间") def is_connect(): devices_list = [] result = os.popen('adb devices') str_list = result.readlines() for i in range(len(str_list)): if str_list[i].find('\tdevice') != -1: temp = str_list[i].split('\t') devices_list.append(temp[0]) if devices_list: print("获取到的设备名是:{}".format(devices_list[0])) return True return False def clock_in(): """打卡""" if is_connect(): # 循环3次提高打卡成功概率 for i in range(3): print("第{}次运行".format(i)) print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) os.system("adb shell am start com.alibaba.android.rimet/.biz.LaunchHomeActivity") print("启动钉钉") time.sleep(2) os.system("adb shell input tap 539 2139") print("点击工作台") time.sleep(3) os.system("adb shell input tap 948 1470") print("点击考勤打卡") time.sleep(3) os.system("adb shell input tap 430 1947") print("点击手机定位") time.sleep(2) # 点击返回 os.system("adb shell input keyevent BACK") time.sleep(2) # 在点返回。回到工作台 os.system("adb shell input keyevent BACK") # 重新考勤打卡 time.sleep(3) os.system("adb shell input tap 948 1470") time.sleep(5) # 点击打卡 os.system("adb shell input tap 548 1121") print("点击打卡") time.sleep(1) # 杀App进程 os.system("adb shell am force-stop com.alibaba.android.rimet") if i == 2: # 循环次数为3时,锁屏 os.system("adb shell input keyevent 26") else: print("设备未连接") if __name__ == '__main__': seconds = interval_time("2021-08-26 21:01") sched = BlockingScheduler() sched.add_job(clock_in, 'interval', seconds=seconds) sched.start()