Python实现钉钉/企业微信自动打卡的示例代码


Posted in Python onFebruary 02, 2021

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

1 前期工具准备

  • 不用说的Python
  • 一部24小时可以放公司的安卓手机或电脑安装模拟器
  • ADB工具

2 ADB的安装配置

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

Python实现钉钉/企业微信自动打卡的示例代码

2.1 UIautomator2的安装

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

3 手机连接电脑

3.1 手机

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

命令行输入

adb devices

检测手机是否连接成功

下面这样就说明成功了

Python实现钉钉/企业微信自动打卡的示例代码

然后运行

python3 -m uiautomator2 init

将atx-agent安装到手机

3.2模拟器

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

4 webitor安装使用

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

pip install --pre weditor

命令行输入

python -m weditor

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

Python实现钉钉/企业微信自动打卡的示例代码

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

5 代码开发

import uiautomator2 as u2
import time
from 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实现钉钉/企业微信自动打卡的示例代码

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

到此这篇关于Python实现钉钉/企业微信自动打卡的示例代码的文章就介绍到这了,更多相关Python 钉钉/企业微信自动打卡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 的 Socket 编程
Mar 24 Python
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
Python 从相对路径下import的方法
Dec 04 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 #Python
python 模块导入问题汇总
Feb 01 #Python
用python制作个视频下载器
Feb 01 #Python
python基于pexpect库自动获取日志信息
Feb 01 #Python
Python入门基础之数字字符串与列表
Feb 01 #Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 #Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 #Python
You might like
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php购物车实现代码
2011/10/10 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
JS实现拼图游戏
2021/01/29 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python中np是做什么的
2020/07/21 Python
如何利用python读取micaps文件详解
2020/10/18 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
幼儿园运动会入场词
2014/02/10 职场文书
春节晚会主持词
2014/03/24 职场文书
房产公证委托书范本
2014/09/20 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
讲文明倡议书
2015/04/29 职场文书
农村党支部承诺书
2015/04/30 职场文书