写点什么

Python 实现钉钉 / 企业微信自动打卡

用户头像
sum56
关注
发布于: 2021 年 02 月 06 日
Python实现钉钉/企业微信自动打卡

每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用 Python 实现定时自动打卡。


1 前期工具准备


  • 不用说的 Python

  • 一部 24 小时可以放公司的安卓手机或电脑安装模拟器

  • ADB 工具


需要打包好的软件关注小编,Q 裙:前 721 中 195 后 303 领取


2 ADB 的安装配置


去下载 ADB 安装包,安装后在环境变量 Path 中添加目录



2 UIautomator2 的安装


# 安装 uiautomator2(PC端)pip3 install -U uiautomator2


3 手机连接电脑


3.1 手机


如果使用的是手机,需要手机开启“开发者选项”模式,然后 USB 调试打开,将 USB 插入电脑


命令行输入


adb devices


检测手机是否连接成功


下面这样就说明成功了



然后运行


python3 -m uiautomator2 init


将 atx-agent 安装到手机


3.2 模拟器


如果使用模拟器,在模拟器的设置中将 ADB 连接打开,同样在命令行输入adb devices检测是否连接成功,是用模拟器的话定位位置需要更改为公司要求打卡范围内,后续步骤同上


4 webitor 安装使用


为了抓取控件更方便安装 weditor


pip install --pre weditor


命令行输入


python -m weditor


在弹开的浏览器中进行操作



输入框中填入第三步得到的设备序列号,然后点击 Connect,正常的话会有个绿色的叶子,应用控件的信息就需要在这里拿到了


5 代码开发


import uiautomator2 as u2import timefrom apscheduler.schedulers.blocking import BlockingScheduler d = u2.connect_usb('b11b0fbe')def click_text(self,str,sq=0): #对于无法直接点击的控件写了个函数   path=d(text=str)[sq]   x,y=path.center()   d.click(x,y)def click(card_ty):   d.app_start("com.alibaba.android.rimet") # 启动应用   time.sleep(5)   d(text="工作台").click()   time.sleep(3)   d(text="考勤打卡").click()   time.sleep(3)   d(scrollable=True).fling.toEnd()   click_text(d,card_ty,-1)   time.sleep(3)   d.screenshot("11.jpg")   d.push("11.jpg", "/sdcard/0/11.jpg")   d.app_stop("com.alibaba.android.rimet")   send_info()def send_info(): #将打卡信息截图利用小号发送给自己大号   d.app_start("com.tencent.mm") # 启动应用   time.sleep(5)   click_text(d,"通讯录")   click_text(d,"打卡")   click_text(d,"发消息")   time.sleep(2)   d(description="更多功能按钮,已折叠").click()   time.sleep(2)   d.swipe(1000, 1450, 100, 1450)   time.sleep(2)   click_text(d,"文件")   time.sleep(2)   click_text(d,"微信文件",-1)   click_text(d,"手机存储")   click_text(d,"0")   d(resourceId="com.tencent.mm:id/cvh").click()   d(text="发送(1/9)").click()   d(text="给朋友留言").click()   d.send_keys("今日打卡记录,请注意查收", clear=True)   d(text="发送").click()   time.sleep(5)   d.app_stop("com.tencent.mm") def job1():   click("上班打卡")def job2():   click("下班打卡")    if __name__ == "__main__":   sched = BlockingScheduler() #设置定时任务,周一至周五 上午8.50自动打上班卡,下午6.10自动打下班卡   sched.add_job(job1, 'cron', day_of_week='mon-fri', hour='8',minute ='50')   sched.add_job(job2, 'cron', day_of_week='mon-fri', hour='18',minute ='10')   sched.start()
复制代码


 
复制代码


其中打卡部分以及微信发送打卡截图部分的代码,需要大家自己根据自己实际的情况做步骤调整。另外不习惯使用 apscheduler 库的话用系统自带的任务计划程序也是可以的,部分步骤效果如下:



企业微信打卡同理,大家可以自行研究,希望大家只是用于学习,不要挑战公司规章制度。


在这里还是要推荐下我自己建的 Python 学习 Q 群:前 721 中 195 后 303,群里都是学 Python 的,如果你想学或者正在学习 Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有 Python 软件开发相关的),包括我自己整理的一份 2021 最新的 Python 进阶资料和零基础教学,欢迎进阶中和对 Python 感兴趣的小伙伴加入!


用户头像

sum56

关注

还未添加个人签名 2021.02.04 加入

还未添加个人简介

评论

发布
暂无评论
Python实现钉钉/企业微信自动打卡