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标准库之sqlite3使用实例
Nov 25 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python方法的延迟加载的示例代码
Dec 18 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
对python使用http、https代理的实例讲解
May 07 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
Python实现ATM系统
Feb 17 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
JavaScript 拾漏补遗
2009/12/27 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
Python模块文件结构代码详解
2018/02/03 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
jupyter notebook清除输出方式
2020/04/10 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
银行演讲稿范文
2014/01/03 职场文书
运动会解说词100字
2014/01/31 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
经济国贸专业求职信
2014/06/18 职场文书
大学生自荐信范文
2015/03/05 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
党员公开承诺书2016
2016/03/24 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL