python模拟手机app签到_python +adb控制手机自动化签到
#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控制手机自动化签到相关推荐
- python控制手机自动刷新闻_python +adb控制手机自动化签到
#coding=utf8 importos,re,time,loggingimportpyautoguifrom apscheduler.schedulers.background import Ba ...
- python adb控制手机制作剑气除魔游戏辅助
python adb控制手机制作剑气除魔游戏辅助 python adb控制手机进行操作 游戏脚本流程 python adb控制手机进行操作 做好准备: 手机或者是模拟器都可以,手机的话usb线连接电脑 ...
- 安卓多台手机之间屏幕同步与pc通过adb控制手机
最近有这样一个需求,多台手机之间,手机B,手机C,手机D全部显示手机A的屏幕或摄像头画面. 一开始为了快速实现,方案为手机A截屏,然后用socket发送给其余手机,效果实现,但是非常卡顿. 后来,想用 ...
- lightroom手机版下载_vnc控制手机版下载,vnc控制手机版下载的使用教程
vnc控制手机版下载,vnc控制有手机版吗?vnc控制手机版下载除了可以应用于在Windows 操作系统下面可视化地远程Linux操作系统,还可以在安卓操作系统下面可视化地远程连接windows的操作 ...
- 手机看图app android开源小众,4款小众实用的手机APP,全是安卓手机的黑科技软件!...
原标题:4款小众实用的手机APP,全是安卓手机的黑科技软件! 相信对于每天都捧着手机来玩的小伙伴们而言,对于手机插件应该不至于陌生吧!大家或多或少的都有在桌面上添加过一些天气.壁纸或者一些应用类的软件 ...
- python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
对于web端和app端的接口测试来说,他们都是通过请求方法,url和传递的body参数进行接口请求,区别web和app的区别就是header请求的不同.不同的地方在于header中的User-Agen ...
- python爬取手机app图片_python 手机app数据爬取
今天向大家介绍app爬取. @ 一:爬取主要流程简述 1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单. 2.在APP中想要查看请求与响应(类似浏览 ...
- python下载手机app视频教程_Python实例教学app
Python实例教学app是一款能够帮助用户获得更多Python学习的软件平台,大家都可以在平台上为自己获得更多优质的手机在线学习帮助,随时在平台上为自己获得更多视频讲解学习帮助,能够帮助大家进行轻松 ...
- 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?
前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...
- python模拟网页点击_python模拟点击
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...
最新文章
- OpenCV读写视频文件解析(二)
- win10装linux分区格式化硬盘,windows10 下硬盘安装centos7.0 – MBR硬盘分区格式
- 科创板7天受理28家公司,但后者“含金量”备受质疑
- Scala集合:reduce(化简)方法使用示例
- 从最小二乘法到卡尔曼滤波
- svn切换分支 如何判断 是否完成_SVN创建分支/合并分支/切换分支
- 缓存,确实很香,却也很受伤!
- java注释 加粗_Java绘图技术,swing画图工具,文字,图片素材,注释,个人理解,星空等【诗书画唱】...
- 科学计算机带度分秒,科学计算器度分秒
- EXCEL数据格式,字符型空值““参与计算、数值为0时单元格显示为空(解决了无法使用value()函数将字符型空值““转换为数字型的问题)
- 阿里成立“平头哥”半导体公司,明年推神经网络芯片
- 基于Quartz实现定时任务-框架学习
- 恒指赵鑫:07.09今日实盘喊单记录与小结
- 图片上传之blob对象预览
- Named Entity Recognition for Chinese Social Media with Jointly Trained Embedding 笔记
- 【ENOVIA 服务包】知识重用解决方案 | 达索系统百世慧®
- 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】
- hdu 2086 A1 = ?(递推)
- 网络劫持是什么?网页被篡改劫持怎么修复(终级方案)网页劫持如何修复?
- 动态规划(DP)小结