每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用python实现定时自动打卡。
1 前期工具准备
- 不用说的python
- 一部24小时可以放公司的安卓手机或电脑安装模拟器
- adb工具
2 adb的安装配置
去下载adb安装包,安装后在环境变量path中添加目录
2.1 uiautomator2的安装
1
2
|
# 安装 uiautomator2(pc端)
pip3 install - u uiautomator2
|
3 手机连接电脑
3.1 手机
如果使用的是手机,需要手机开启“开发者选项”模式,然后usb调试打开,将usb插入电脑
命令行输入
1
|
adb devices
|
检测手机是否连接成功
下面这样就说明成功了
然后运行
1
|
python3 - m uiautomator2 init
|
将atx-agent安装到手机
3.2模拟器
如果使用模拟器,在模拟器的设置中将adb连接打开,同样在命令行输入adb devices
检测是否连接成功,是用模拟器的话定位位置需要更改为公司要求打卡范围内,后续步骤同上
4 webitor安装使用
为了抓取控件更方便安装weditor
1
|
pip install - - pre weditor
|
命令行输入
1
|
python - m weditor
|
在弹开的浏览器中进行操作
输入框中填入第三步得到的设备序列号,然后点击connect,正常的话会有个绿色的叶子,应用控件的信息就需要在这里拿到了
5 代码开发
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
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 钉钉/企业微信自动打卡内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/aaahtml/article/details/112789525