#coding=utf8

importos,re,time,loggingimportpyautoguifrom apscheduler.schedulers.background import BackgroundScheduler #后台运行任务计划

sc=BackgroundScheduler()

UIFILE= "ui.xml"

#如何找APP的值,请看runapp()函数注释

APP = r"com.XXX/XXXActivity"logging.basicConfig(filename="adbwork.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)#执行cmd命令

defa(c):

r=os.popen(c).read()returnr#判断设备是否连接

defcaniuse():

s= a("adb devices").split("\n")if s[1]=='':returnFalseelse:returnTrue#判断wifi是否连接#adb shell getprop wifi.interface 得到返回wlan0

defcanwifi():

s= a("adb shell getprop dhcp.wlan0.result").split("\n")if s[0]=='ok':returnTrueelse:returnFalse#清理关闭所有程序==可能不适用您的手机

defclean():

a("adb shell input keyevent 187") #切换应用

time.sleep(1)

a("adb shell input tap 540 1740") #点击清扫按钮

time.sleep(1)#判断手机电源是否打开

defpoweron():

s= a("adb shell dumpsys power")

s= re.search(r"Display Power: state=ON",s,re.I |re.M)if s ==None:returnFalseelse:returnTrue#启动APP

defrunapp(app):#获取所有package:adb shell pm list packages 查看所有包名

#获取当前package和activity:首先打开APP,然后运行:adb shell dumpsys window | findstr mCurrentFocus

#获取package和activity:1、首先运行:adb shell dumpsys package 用上一行命令获取的package名

#2、然后在输入结果中找 Activity Resolver Table: ... Non-Data Actions:下面第2行,

#类似1960b60b com.baidu.searchbox/com.baidu.android.pushservice.PushPatchMessageReceiver的

#用作本函数的参数,以启动APP

a("adb shell am start"+app)def Tap(kw,ordinal=0):

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode='r', encoding='UTF-8') as f: #打开文件

data = f.read() #读取文件

regkw = "]+?" + kw + ".[^>]+?\[(\d+),(\d+)\]\[(\d+),(\d+)\].+?>"a=re.findall(regkw, data)

x1=int(a[ordinal][0])

y1= int(a[ordinal][1])

x2= int(a[ordinal][2])

y2= int(a[ordinal][3])

xx= int((x2-x1)/2 +x1)

yy= int((y2-y1)/2 +y1)

cmd= "adb shell input tap" + str(xx) +" " +str(yy)

r=os.popen(cmd).read()return ''

#获取手机当前页面的源代码,并复制到当前脚本所在目录

defui():

a(r"cmd /c del ui.xml -y")#删除当前目录下旧的ui.xml(如果有的话)

a("adb shell rm /sdcard/ui.xml")#删除手机中旧的的ui.xml(如果有的话)

a("adb shell uiautomator dump /sdcard/ui.xml") #重新dump

time.sleep(0)#等待保存到手机卡

a("adb pull /sdcard/ui.xml .")

time.sleep(0)#等待下载到电脑

#判断用ui()函数获取的ui.xml的源码中是否包括1个或多个关键字(不能用正则表达式)#用法:uiContains("关键字1","关键字n")

def uiContains(*kw):

numkw=len(kw)

kws=''

if numkw<1:returnFalsefor i inrange(len(kw)):

kws= kws + kw[i]+'|'kws= kws.strip('|')

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode='r', encoding='UTF-8') as f: #打开文件

data = f.read() #读取文件

a =re.findall(kws, data)

numkwfind=len(set(a))if numkw ==numkwfind:returnTrueelse:returnFalse#判断用ui()函数获取的ui.xml的源码中是否匹配1个“正则表达式”#用法:uiRegEx("正则表达式")

defuiRegEx(regkw):

ui()#刷新

while notos.path.isfile(UIFILE):

time.sleep(0.5)

with open(UIFILE, mode='r', encoding='UTF-8') as f: #打开文件

data = f.read() #读取文件

a =re.findall(regkw, data)print(a)

num=len(a)print(num)if num >0 :returnTrueelse:returnFalse#强制退出应用adb shell am force-stop #a("adb shell am force-stop XXXX")#点击:adb shell input tap 939 1820#滑动:adb shell input swipe 451 1183 490 321#长按:将滑动距离缩小并加延时1秒 adb shell input swipe 500 1500 500 1500 1000#模拟按键:adb shell input keyevent 26#常用keycode#HOME键3 返回键4 电源键26#切换应用187 点亮屏幕224 系统休眠223#KEYCODE_0表示数字0 KEYCODE_ENTER KEYCODE_TAB

#签到,要根据个人手机情况微调

defqd():

a("adb shell input tap 939 1820") #点积分

time.sleep(1)#签到积分

@sc.scheduled_job('interval', seconds=3600*8 ,id='dowork') #每隔X秒执行一次

defdowork():#开始操作

logging.info("开始签到")

a("adb shell input keyevent 224") #点亮手机屏幕

time.sleep(1)

a("adb shell input swipe 500 1500 500 400")#向上滑动

time.sleep(1)

a("adb shell input keyevent 3") #HOME

if caniuse() == False:#如果在手机点亮前检查,经常是连接不上

pyautogui.alert("请检查手机连接状态")return

if canwifi() == False:#如果在手机点亮前检查,经常是连接不上

pyautogui.alert("请检查wifi状态")returnrunapp(APP)#启动应用

time.sleep(30)#手机休眠前清理应用==================================

clean()

a("adb shell input keyevent 223") #系统休眠

logging.info("完成签到")if __name__ == '__main__':

dowork()

sc.start()while(1):#保持程序不退出

pass

python模拟手机app签到_python +adb控制手机自动化签到相关推荐

  1. python控制手机自动刷新闻_python +adb控制手机自动化签到

    #coding=utf8 importos,re,time,loggingimportpyautoguifrom apscheduler.schedulers.background import Ba ...

  2. python adb控制手机制作剑气除魔游戏辅助

    python adb控制手机制作剑气除魔游戏辅助 python adb控制手机进行操作 游戏脚本流程 python adb控制手机进行操作 做好准备: 手机或者是模拟器都可以,手机的话usb线连接电脑 ...

  3. 安卓多台手机之间屏幕同步与pc通过adb控制手机

    最近有这样一个需求,多台手机之间,手机B,手机C,手机D全部显示手机A的屏幕或摄像头画面. 一开始为了快速实现,方案为手机A截屏,然后用socket发送给其余手机,效果实现,但是非常卡顿. 后来,想用 ...

  4. lightroom手机版下载_vnc控制手机版下载,vnc控制手机版下载的使用教程

    vnc控制手机版下载,vnc控制有手机版吗?vnc控制手机版下载除了可以应用于在Windows 操作系统下面可视化地远程Linux操作系统,还可以在安卓操作系统下面可视化地远程连接windows的操作 ...

  5. 手机看图app android开源小众,4款小众实用的手机APP,全是安卓手机的黑科技软件!...

    原标题:4款小众实用的手机APP,全是安卓手机的黑科技软件! 相信对于每天都捧着手机来玩的小伙伴们而言,对于手机插件应该不至于陌生吧!大家或多或少的都有在桌面上添加过一些天气.壁纸或者一些应用类的软件 ...

  6. python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试

    对于web端和app端的接口测试来说,他们都是通过请求方法,url和传递的body参数进行接口请求,区别web和app的区别就是header请求的不同.不同的地方在于header中的User-Agen ...

  7. python爬取手机app图片_python 手机app数据爬取

    今天向大家介绍app爬取. @ 一:爬取主要流程简述 1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单. 2.在APP中想要查看请求与响应(类似浏览 ...

  8. python下载手机app视频教程_Python实例教学app

    Python实例教学app是一款能够帮助用户获得更多Python学习的软件平台,大家都可以在平台上为自己获得更多优质的手机在线学习帮助,随时在平台上为自己获得更多视频讲解学习帮助,能够帮助大家进行轻松 ...

  9. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?

    前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...

  10. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

最新文章

  1. OpenCV读写视频文件解析(二)
  2. win10装linux分区格式化硬盘,windows10 下硬盘安装centos7.0 – MBR硬盘分区格式
  3. 科创板7天受理28家公司,但后者“含金量”备受质疑
  4. Scala集合:reduce(化简)方法使用示例
  5. 从最小二乘法到卡尔曼滤波
  6. svn切换分支 如何判断 是否完成_SVN创建分支/合并分支/切换分支
  7. 缓存,确实很香,却也很受伤!
  8. java注释 加粗_Java绘图技术,swing画图工具,文字,图片素材,注释,个人理解,星空等【诗书画唱】...
  9. 科学计算机带度分秒,科学计算器度分秒
  10. EXCEL数据格式,字符型空值““参与计算、数值为0时单元格显示为空(解决了无法使用value()函数将字符型空值““转换为数字型的问题)
  11. 阿里成立“平头哥”半导体公司,明年推神经网络芯片
  12. 基于Quartz实现定时任务-框架学习
  13. 恒指赵鑫:07.09今日实盘喊单记录与小结
  14. 图片上传之blob对象预览
  15. Named Entity Recognition for Chinese Social Media with Jointly Trained Embedding 笔记
  16. 【ENOVIA 服务包】知识重用解决方案 | 达索系统百世慧®
  17. 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】
  18. hdu 2086 A1 = ?(递推)
  19. 网络劫持是什么?网页被篡改劫持怎么修复(终级方案)网页劫持如何修复?
  20. 动态规划(DP)小结

热门文章

  1. 神策应用-概述认知(一)
  2. pale moon 最新版中文包安装方法
  3. 走进JavaWeb技术世界9:Java日志系统的诞生与发展
  4. 走近Palantir
  5. LVM -逻辑卷管理
  6. simulink官方电机控制示例汇总
  7. 自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
  8. 2022年全球市场燃气烧烤架总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. 战地2142 我喜欢...
  10. Python简单使用蓝本