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系列之数据处理编程实例(一)
May 22 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
Djang中静态文件配置方法
Jul 30 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python函数定义和调用过程详解
Feb 09 Python
python中的 zip函数详解及用法举例
Feb 16 Python
Django实现前台上传并显示图片功能
May 29 Python
详解python datetime模块
Aug 17 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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
JSON在PHP中的应用介绍
2012/09/08 PHP
php实现分页工具类分享
2014/01/09 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
EJB的激活机制
2013/10/25 面试题
给老婆的搞笑检讨书
2014/01/12 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
幼师求职自荐信
2014/05/31 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js