模拟手机钉钉自动打卡,此方式不存在修改定位之类的,定时运行windows任务。代码内设置了随机延时1-10分钟,避免每次打卡时间过于雷同。
环境要求
1 钉钉升级了专业版(可以登录2台手机,另外一台其实可登可不登,下班了基本不管钉钉消息,根据自己的需求来)
2 打卡手机:设置自动打卡,并设置好时间,如:上班前15分钟,下班后5分钟自动打卡。取消锁屏密码,不相关的软件都卸载了,长期放公司。
3 日常手机:禁用了钉钉定位权限,下班了偶尔收下钉钉消息
python的环境需要自行配置,测试没问题后,设置一个windows定时任务即可,后续有空会补上这一部分。代码比较简单,未设置错误处理和日志,初学者也可以很容易看明白,基本上长期稳定。
注意:此代码为iqoo手机,不同品牌手机adb命令可能有所不同,如无法使用,请调整相关代码
完整代码
import subprocess
import time
import random
def run_cmd_Popen_fileno(cmd_string):
"""
执行cmd命令,并得到执行后的返回值,python调试界面输出返回值
:param cmd_string: cmd命令,如:'nvcc -V'
:return:*'
"""
time.sleep(2)
print('运行cmd指令:{}'.format(cmd_string))
return subprocess.Popen(cmd_string, shell=True, stdout=None, stderr=None).wait()
run_cmd_Popen_fileno('adb devices')
run_cmd_Popen_fileno('adb shell input keyevent 82') # 点亮屏幕
run_cmd_Popen_fileno('adb shell input swipe 500 1200 500 50') # 滑动一定距离解锁,未设置锁屏密码
run_cmd_Popen_fileno('adb shell am start com.bbk.launcher2/.Launcher') # 返回主界面
time.sleep(3)
t = random.randint(0,601) # 0-600之间随机选取一个数,单位为秒
run_cmd_Popen_fileno('adb shell cmd location set-location-enabled true') # 打开gps定位
time.sleep(t) # 延时上面选择的随机数
run_cmd_Popen_fileno('adb shell am start com.alibaba.android.rimet/.biz.LaunchHomeActivity') # 打开钉钉
time.sleep(10)
run_cmd_Popen_fileno('adb shell am start com.bbk.launcher2/.Launcher') # 退回主界面
time.sleep(3)
run_cmd_Popen_fileno('adb shell cmd location set-location-enabled false') # 关闭gps定位