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中enumerate函数用法实例分析
May 20 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python中字符串的操作方法大全
Jun 03 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
Python箱型图处理离群点的例子
Dec 09 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
python 实现mysql自动增删分区的方法
Apr 01 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
用Flash图形化数据(二)
2006/10/09 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
Django 导出 Excel 代码的实例详解
2017/08/11 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
学python最电脑配置有要求么
2020/07/05 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
教学改革实施方案
2014/03/31 职场文书
数学系毕业生求职信
2014/05/29 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
毕业设计致谢词
2015/05/14 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
色戒观后感
2015/06/12 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server