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实现修改IE注册表功能示例
May 10 Python
windows下python安装pip图文教程
May 25 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python实现邮件自动发送
Aug 10 Python
python实现图片横向和纵向拼接
Mar 05 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
在python中读取和写入CSV文件详情
Jun 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中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php实现算术验证码功能
2018/12/05 PHP
PDO::setAttribute讲解
2019/01/29 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
js 数组操作代码集锦
2009/04/28 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
js实现无缝轮播图
2020/03/09 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
Python set常用操作函数集锦
2017/11/15 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
python同步两个文件夹下的内容
2019/08/29 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
商场总经理岗位职责
2014/02/03 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
2014年手术室工作总结
2014/11/26 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python