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中的pprint折腾记
Jan 21 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
Python实现的栈(Stack)
Jan 26 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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中计算程序运行时间的类代码
2012/11/03 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
Python里隐藏的“禅”
2014/06/16 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python探索之Metaclass初步了解
2017/10/28 Python
python3实现绘制二维点图
2019/12/04 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
Linux操作面试题
2015/02/11 面试题
电子信息工程自荐信
2014/05/26 职场文书
投标授权委托书范文
2014/08/02 职场文书
单位工资证明范本
2015/06/12 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle