ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:56.01KB ,
资源ID:2154498      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2154498.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(python3基于uiautomator2实现钉钉自动打卡.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

python3基于uiautomator2实现钉钉自动打卡.docx

1、python3基于uiautomator2实现钉钉自动打卡python3基于uiautomator实现钉钉自动打卡1、思路首先开启钉钉中的极速打卡功能,然后利用python3+uiautomator2,在上下班时间启动钉钉apk即可。2、使用说明电脑必须有python3的环境,python3、python3、python3重要的事情说三遍。手机安装微信,登录自己的微信小号USB线连接手机,dos窗口运行,python -m uiautomator2 init运行成功的标志:手机中安装一个名称为ATX的apk,打开后点击“启动”在config.txt填写上班下班时间,微信号,打卡APP账户、密码

2、信息,自动化脚本都自动读取一切准备好后,双击start_AutoClock.bat,执行自动化打卡3、自动化脚本运行流程1.定时判断是否到上下班时间2.到预期时间后,执行启动apk,循环启动3次,确保执行了极速打卡3.每次在dd界面等待30秒,给dd执行极速打卡功能4.3次循环完成后,启动dd后,在打卡通知界面截图5. 在文件管理中找到截图,微信(自己的微信小号)分享打卡截图给微信好友(自己的微信大号)3.1 config.txt文件,填写自己的信息start_AutoClock.bat(windows下双击执行批处理)# !/usr/bin/env python# -*- coding: u

3、tf-8 -*-# Time : 2019/06/11 16:34# Author : huangpeng# Site :# File : AutoClock.py# Software: PyCharmimport unittestimport timeimport sysimport uiautomator2 as u2import logginglogging.basicConfig(level = logging.INFO,format = %(asctime)s - %(name)s - %(levelname)s - %(message)s)logger = logging.getL

4、ogger(_name_)d = u2.connect()#d = u2.connect(192.168.1.239)# 打开文本文件fp = open(config.txt, r)# 使用readlines读取lines = fp.readlines()config = for line in lines: # 将读取的每行内容过滤掉换行符,如果不加这个条件,输入的内容中将会添加换行符n line = line.strip(n) ss = line.split(=) # 将每行内容根据=分割 configss0 = ss1fp.close()class Test(unittest.TestC

5、ase): def setUp(self): self.watcherson() print(d.watchers) print (-SetUp -n) def tearDown(self): d.watchers.remove() print (-TearDown-n) def watcherson(self): d.watcher(u注意).when(text=u你在此次选择后可以到“手机管理 - 权限管理”中修改此项设置).click(text=u允许, className=android.widget.Button,resourceId=android:id/button1) d.wa

6、tcher(u无响应).when(text=u关闭应用).click(text=u关闭应用, className=android.widget.Button) d.watchers.run() pass def test_autoclockout(self):# 下班打卡 logger.info(检查时间是否到下班时间) while True: time1 =config下班起始时间 # 起始下班时间(启动ddapk时间) time2 =config下班终止时间 # 终止时间 now1 = time.strftime(%H%M%S)#一定要在while循环中才会实时更新为当前时间 if int

7、(time2)int(now1)int(time1): #定时执行app logger.info(到下班时间) self.test_autoclock() #进入dd应用,进行极速打卡 time.sleep(1) self.test_WeChatMsgsnd() # 打开微信分享打卡截图 break def test_autoclockin(self):# 上班打卡 logger.info(检查时间是否到上班时间) while True: time1 = config上班起始时间 # 起始下班时间(启动ddapk时间) time2 = config上班终止时间 # 终止时间 now1 = ti

8、me.strftime(%H%M%S) # 一定要在while循环中才会实时更新为当前时间 if int(time2) int(now1) int(time1): # 定时执行app logger.info(到上班时间) logger.info(进入dd) self.test_autoclock() #进入dd应用,进行极速打卡 time.sleep(1) self.test_WeChatMsgsnd()#打开微信分享打卡截图 break def test_WeChatMsgsnd(self): time.sleep(3) self.test_lock() time.sleep(1) logg

9、er.info(打开dd) d.app_start(com.alibaba.android.rimet) # 打开dd time.sleep(5) logger.info(截图) d.screenshot(Screenshot.jpg) time.sleep(2) d.push(Screenshot.jpg, /sdcard/0pics/) time.sleep(2) logger.info(退出dd) d.app_stop(com.alibaba.android.rimet) time.sleep(1) d.press(home) time.sleep(1) logger.info(打开文件

10、管理器) d.app_start(com.qiku.android.filebrowser) time.sleep(2) while True: logger.info(检查是否在文件夹初始界面) if d(resourceId=com.qiku.android.filebrowser:id/storage_name).exists: logger.info(在文件夹初始界面,进入文件夹) d(resourceId=com.qiku.android.filebrowser:id/storage_arrows).click() time.sleep(1) logger.info(进入保存图片文件

11、夹) d(resourceId=com.qiku.android.filebrowser:id/file_name).click() time.sleep(1) logger.info(长按图片) d.long_click(0.348, 0.219) time.sleep(1) logger.info(分享) d(text=u分享).click() time.sleep(3) logger.info(选分享对象) d(text=u发送给朋友).click() time.sleep(1) logger.info(选择朋友) d(resourceId=com.tencent.mm:id/b98).

12、click() time.sleep(0.5) d(resourceId=com.tencent.mm:id/b98).clear_text() time.sleep(0.5) d(resourceId=com.tencent.mm:id/b98).set_text(config自己微信大号名称) time.sleep(0.5) d(resourceId=com.tencent.mm:id/qm).click() time.sleep(0.5) logger.info(点击发送) d(resourceId=com.tencent.mm:id/b00).click() time.sleep(7)

13、 d.press(home) logger.info(息屏) d.screen_off() # 息屏 break else: logger.info(不在文件夹初始界面,返回继续检查是否在初始界面) d.press(back) time.sleep(1) def test_autoclock(self): #进入dd应用,进行极速打卡 logger.info(检查解手机屏幕锁) self.test_lock() # 判断是否需要屏幕解锁 while True: logger.info(判断是否在手机初始桌面) if d(text=u拨号).exists(): # 判断是否在手机初始桌面 log

14、ger.info(在手机初始桌面) time.sleep(1) logger.info(打开dd) d.app_start(com.alibaba.android.rimet) # 打开dd time.sleep(3) logger.info(判断是否需要登录) if d(resourceId=com.alibaba.android.rimet:id/btn_next).exists(): # 判断是否需要登录 logger.info(需要登录) self.test_login() #执行登录dd账户 logger.info(登录成功) logger.info(等待30秒极速打卡时间) tim

15、e.sleep(30) logger.info(退出dd) d.app_stop(com.alibaba.android.rimet)# 退出dd time.sleep(2) for count in list(range(1, 3): logger.info(进入dd,执行极速打卡) d.app_start(com.alibaba.android.rimet) # 打开dd logger.info(等待30秒极速打卡时间) time.sleep(30) logger.info(退出dd) d.app_stop(com.alibaba.android.rimet) # 退出dd time.sl

16、eep(1) logger.info(息屏) d.screen_off() # 息屏 else: logger.info(不需要登录,执行极速打卡) logger.info(等待30秒极速打卡时间) time.sleep(30) logger.info(退出dd) d.app_stop(com.alibaba.android.rimet) # 退出dd time.sleep(2) for count in list(range(1, 3): logger.info(进入dd,执行极速打卡) d.app_start(com.alibaba.android.rimet) # 打开dd logger

17、.info(等待30秒极速打卡时间) time.sleep(30) logger.info(退出dd) d.app_stop(com.alibaba.android.rimet) # 退出dd time.sleep(1) logger.info(息屏) d.screen_off() # 息屏 break else: logger.info(不在手机初始桌面,返回继续检测是否在初始桌面) d.press(back) time.sleep(1) def test_login(self): #登录dd账号 logger.info(输入账号) time.sleep(1) d(resourceId=co

18、m.alibaba.android.rimet:id/et_phone_input).click() time.sleep(0.5) d(resourceId=com.alibaba.android.rimet:id/et_phone_input).clear_text() # 这里是清除指定元素的内容 time.sleep(0.5) d(resourceId=com.alibaba.android.rimet:id/et_phone_input).set_text(config钉钉账号) # 这里是在指定元素中输入dd账号 time.sleep(0.5) logger.info(输入密码)

19、d(resourceId=com.alibaba.android.rimet:id/et_pwd_login).click() d(resourceId=com.alibaba.android.rimet:id/et_pwd_login).clear_text() # 这里是清除指定元素的内容 time.sleep(0.5) d(resourceId=com.alibaba.android.rimet:id/et_pwd_login).set_text(config钉钉密码) # 这里是在指定元素中输入dd密码# time.sleep(0.5) logger.info(登录) d(resour

20、ceId=com.alibaba.android.rimet:id/btn_next).click() def test_lock(self): #解锁手机屏幕 d.screen_on() logger.info(判断手机是否在锁屏状态) if d(resourceId=com.android.systemui:id/notification_stack_scroller).exists():#判断手机是否在锁屏状态 logger.info(锁屏状态,执行解锁) d.swipe_points(0.485, 0.708), (0.481, 0.286), 0.05) # 滑动解锁界面 time.

21、sleep(1) logger.info(判断是否存在图案锁) if d(resourceId=com.android.systemui:id/lockPatternView).exists(): # 判断是否存在图案锁 logger.info(存在,需要解图案锁) d.swipe_points(0.777, 0.539), (0.509, 0.691), (0.777, 0.694), (0.512, 0.853), , 0.05) # 解九宫图案锁(需要修改自己的图案锁坐标) time.sleep(1) else: logger.info(不存在,滑动解锁成功) else: logger.info(手机未锁屏不用解锁)if _name_ = _main_: Test=Test() Test.test_autoclockout() Test.test_autoclockin()3.2 备注:AutoClock.py是使用360 N5手机适配,其他手机可能需要轻微的修改可以支持解图案锁,但要根据实际手机情况修改图案坐标位置,也可以不设置图案锁需开启钉钉极速打卡功能,开启极速打卡、开启极速打卡、开启极速打卡将AutoClock.py、start_AutoClock.ba和config.txt放在同一个目录下

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2