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

上传人:b****1 文档编号:2154498 上传时间:2023-05-02 格式:DOCX 页数:11 大小:56.01KB
下载 相关 举报
python3基于uiautomator2实现钉钉自动打卡.docx_第1页
第1页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第2页
第2页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第3页
第3页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第4页
第4页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第5页
第5页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第6页
第6页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第7页
第7页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第8页
第8页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第9页
第9页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第10页
第10页 / 共11页
python3基于uiautomator2实现钉钉自动打卡.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《python3基于uiautomator2实现钉钉自动打卡.docx》由会员分享,可在线阅读,更多相关《python3基于uiautomator2实现钉钉自动打卡.docx(11页珍藏版)》请在冰点文库上搜索。

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

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

python3基于uiautomator实现钉钉自动打卡

1、思路

首先开启钉钉中的极速打卡功能,然后利用python3+uiautomator2,在上下班时间启动钉钉apk即可。

2、使用说明

电脑必须有python3的环境,python3、python3、python3…重要的事情说三遍。

手机安装微信,登录自己的微信小号

USB线连接手机,dos窗口运行,python-muiautomator2init

运行成功的标志:

手机中安装一个名称为ATX的apk,打开后点击“启动”

在config.txt填写上班下班时间,微信号,打卡APP账户、密码信息,自动化脚本都自动读取

一切准备好后,双击start_AutoClock.bat,执行自动化打卡

3、自动化脚本运行流程

1.定时判断是否到上下班时间

2.到预期时间后,执行启动apk,循环启动3次,确保执行了极速打卡

3.每次在dd界面等待30秒,给dd执行极速打卡功能

4.3次循环完成后,启动dd后,在打卡通知界面截图

5.在文件管理中找到截图,微信(自己的微信小号)分享打卡截图给微信好友(自己的微信大号)

 

3.1config.txt文件,填写自己的信息

start_AutoClock.bat(windows下双击执行批处理)

#!

/usr/bin/envpython

#-*-coding:

utf-8-*-

#@Time:

2019/06/1116:

34

#@Author:

huangpeng

#@Site:

#@File:

AutoClock.py

#@Software:

PyCharm

importunittest

importtime

importsys

importuiautomator2asu2

importlogging

logging.basicConfig(level=logging.INFO,format='%(asctime)s-%(name)s-%(levelname)s-%(message)s')

logger=logging.getLogger(__name__)

d=u2.connect()

#d=u2.connect('192.168.1.239')

#打开文本文件

fp=open('config.txt','r')

#使用readlines读取

lines=fp.readlines()

config={}

forlineinlines:

#将读取的每行内容过滤掉换行符,如果不加这个条件,输入的内容中将会添加换行符\n

line=line.strip('\n')

ss=line.split('=')#将每行内容根据=分割

config[ss[0]]=ss[1]

fp.close()

————————————————

classTest(unittest.TestCase):

defsetUp(self):

self.watcherson()

print('d.watchers')

print("----------SetUp-----\n")

deftearDown(self):

d.watchers.remove()

print("-----------TearDown----\n")

defwatcherson(self):

d.watcher(u'注意').when(text=u'你在此次选择后可以到“手机管理-权限管理”中修改此项设置').click(text=u'允许',className='android.widget.Button',resourceId='android:

id/button1')

d.watcher(u'无响应').when(text=u'关闭应用').click(text=u'关闭应用',className='android.widget.Button')

d.watchers.run()

pass

deftest_autoclockout(self):

#下班打卡

logger.info("检查时间是否到下班时间")

whileTrue:

time1=config["下班起始时间"]#起始下班时间(启动ddapk时间)

time2=config["下班终止时间"]#终止时间

now1=time.strftime("%H%M%S")#一定要在while循环中才会实时更新为当前时间

ifint(time2)>int(now1)>int(time1):

#定时执行app

logger.info("到下班时间")

self.test_autoclock()#进入dd应用,进行极速打卡

time.sleep

(1)

self.test_WeChatMsgsnd()#打开微信分享打卡截图

break

deftest_autoclockin(self):

#上班打卡

logger.info("检查时间是否到上班时间")

whileTrue:

time1=config["上班起始时间"]#起始下班时间(启动ddapk时间)

time2=config["上班终止时间"]#终止时间

now1=time.strftime("%H%M%S")#一定要在while循环中才会实时更新为当前时间

ifint(time2)>int(now1)>int(time1):

#定时执行app

logger.info("到上班时间")

logger.info("进入dd")

self.test_autoclock()#进入dd应用,进行极速打卡

time.sleep

(1)

self.test_WeChatMsgsnd()#打开微信分享打卡截图

break

deftest_WeChatMsgsnd(self):

time.sleep(3)

self.test_lock()

time.sleep

(1)

logger.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("打开文件管理器")

d.app_start("com.qiku.android.filebrowser")

time.sleep

(2)

whileTrue:

logger.info("检查是否在文件夹初始界面")

ifd(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("进入保存图片文件夹")

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").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)

d.press("home")

logger.info("息屏")

d.screen_off()#息屏

break

else:

logger.info("不在文件夹初始界面,返回继续检查是否在初始界面")

d.press("back")

time.sleep

(1)

deftest_autoclock(self):

#进入dd应用,进行极速打卡

logger.info("检查解手机屏幕锁")

self.test_lock()#判断是否需要屏幕解锁

whileTrue:

logger.info("判断是否在手机初始桌面")

ifd(text=u"拨号").exists():

#判断是否在手机初始桌面

logger.info("在手机初始桌面")

time.sleep

(1)

logger.info("打开dd")

d.app_start("com.alibaba.android.rimet")#打开dd

time.sleep(3)

logger.info("判断是否需要登录")

ifd(resourceId="com.alibaba.android.rimet:

id/btn_next").exists():

#判断是否需要登录

logger.info("需要登录")

self.test_login()#执行登录dd账户

logger.info("登录成功")

logger.info("等待30秒极速打卡时间")

time.sleep(30)

logger.info("退出dd")

d.app_stop("com.alibaba.android.rimet")#退出dd

time.sleep

(2)

forcountinlist(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.sleep

(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)

forcountinlist(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.sleep

(1)

logger.info("息屏")

d.screen_off()#息屏

break

else:

logger.info("不在手机初始桌面,返回继续检测是否在初始桌面")

d.press("back")

time.sleep

(1)

deftest_login(self):

#登录dd账号

logger.info("输入账号")

time.sleep

(1)

d(resourceId="com.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("输入密码")

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(resourceId="com.alibaba.android.rimet:

id/btn_next").click()

deftest_lock(self):

#解锁手机屏幕

d.screen_on()

logger.info("判断手机是否在锁屏状态")

ifd(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.sleep

(1)

logger.info("判断是否存在图案锁")

ifd(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是使用360N5手机适配,其他手机可能需要轻微的修改

可以支持解图案锁,但要根据实际手机情况修改图案坐标位置,也可以不设置图案锁

需开启钉钉极速打卡功能,开启极速打卡、开启极速打卡、开启极速打卡……

将AutoClock.py、start_AutoClock.ba和config.txt放在同一个目录下

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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