Python实现钉钉/企业微信自动打卡的示例代码
作者:程序媛柚柚 发布时间:2022-02-18 21:54:02
标签:Python,钉钉,企业微信,自动打卡
每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用Python实现定时自动打卡。
1 前期工具准备
不用说的Python
一部24小时可以放公司的安卓手机或电脑安装模拟器
ADB工具
2 ADB的安装配置
去下载ADB安装包,安装后在环境变量Path中添加目录
2.1 UIautomator2的安装
# 安装 uiautomator2(PC端)
pip3 install -U uiautomator2
3 手机连接电脑
3.1 手机
如果使用的是手机,需要手机开启“开发者选项”模式,然后USB调试打开,将USB插入电脑
命令行输入
adb devices
检测手机是否连接成功
下面这样就说明成功了
然后运行
python3 -m uiautomator2 init
将atx-agent安装到手机
3.2模拟器
如果使用模拟器,在模拟器的设置中将ADB连接打开,同样在命令行输入adb devices
检测是否连接成功,是用模拟器的话定位位置需要更改为公司要求打卡范围内,后续步骤同上
4 webitor安装使用
为了抓取控件更方便安装weditor
pip install --pre weditor
命令行输入
python -m weditor
在弹开的浏览器中进行操作
输入框中填入第三步得到的设备序列号,然后点击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库的话用系统自带的任务计划程序也是可以的,部分步骤效果如下:
企业微信打卡同理,大家可以自行研究,希望大家只是用于学习,不要挑战公司规章制度。
来源:https://blog.csdn.net/aaahtml/article/details/112789525


猜你喜欢
- 目录构建消息对象发送邮件要点在很多时候,使用 Python 发送邮件可能没有办法使用邮件服务器提供的 API,因为不是所有的邮件服务商都会提
- 在WEB2.0 网页充斥的年代,身边无时无刻都听到这样的声音:“拒绝海报式设计,要做有用的设计,要简洁,要清爽,要大气”产品经理
- 一、个人安装环境1.Windows10x64_pro2.anaconda4.6.9 +python3.7.1(anaconda集成,不需单独
- 自定义组件挂载原型上以elementUI二次分装dialog举例PageDialog.vue<!-- 页面提示弹框 --><
- 本文实例讲述了php查询mysql数据库并将结果保存到数组的方法。分享给大家供大家参考。具体分析如下:这里主要用到了mysql_fetch_
- Object 类型的对象虽然有 toString 方法,但结果却是 [Object Object] 让人没法理解的字符。比如简单的对象:{n
- 配置如下TEMPLATES = [下面'context_processors': [中添加'django.core.
- 由于后台程序会过滤掉单引号,所以有些地方如果出现莫民奇妙的空格,就表示单引号,特此说明。 /** * @author Super Sha *
- 前言:大家跟我一起念,Python * 好,跟着本宝宝用Python抢火车票首先我们需要splinter安装:pip install spli
- 本文实例讲述了Go语言生成随机数的方法。分享给大家供大家参考。具体实现方法如下:golang生成随机数可以使用math/rand包packa
- 前言python中常用的写爬虫的库常有urllib2、requests,对于大多数比较简单的场景或者以学习为目的,可以用这两个库实现。这里有
- 在一些面试或者力扣题中都要求用双向链表来实现,下面是基于python的双向链表实现。一、构建链表节点class Node: &n
- 这篇文章主要介绍了通过实例学习Python Excel操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- riginal_Data因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理。Import_D
- 使用json.dumps输出中文在使用json.dumps时要注意一个问题>>> import json>>&
- 所有平台的Mysql下载地址为: MySQL 下载. 挑选你需要的 MySQL Community Server 版本及对应的平台。一、Li
- 概述通过自定义网络, 我们可以自己创建网络并和现有的网络串联起来, 从而实现各种各样的网络结构.SequentialSequential 是
- 应用OpenCV和Python进行SIFT算法的实现如下图为进行测试的gakki101和gakki102,分别验证基于BFmatcher、F
- 最近在研究WEB布局,遇到<H1>标签了,<H1>标签很重要。在一般教程中都这么说,<H1>标签在同一页
- 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-Conq