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参数和作用域的使用
Nov 01 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Python简单实现enum功能的方法
Apr 25 Python
Python类属性的延迟计算
Oct 22 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Django 迁移、操作数据库的方法
Aug 02 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 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
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
php二维码生成
2015/10/19 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
分析JS单线程异步io回调的特性
2017/12/01 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python看某个模块的版本方法
2018/10/16 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
django框架ModelForm组件用法详解
2019/12/11 Python
css3学习心得分享
2013/08/19 HTML / CSS
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
运动会解说词50字
2014/01/18 职场文书
五四青年节演讲稿
2014/05/26 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android