import os
import sys
from time import sleep
from random import randint
class Event(object):
def __init__(self):
'''常用keyevent事件'''
self.KEYCODE_HOME = 3 # home键
self.KEYCODE_MENU = 82 # 解锁
self.KEYCODE_BACK = 4 # back键
self.KEYCODE_POWER = 26 # power键
self.KEYCODE_DPAD_UP = 19 # 向上
self.KEYCODE_DPAD_DOWN = 20 # 向下
self.KEYCODE_DPAD_LEFT = 21 # 向左
self.KEYCODE_DPAD_RIGHT = 22 # 向右
self.package = "com"
#os.system("adb devices")
def show_menu(self):
print("========================================================== ")
print("|| <1>按键事件 <2>填充内存 <3>启动包 ||\n")
print("|| <4>查看版本 <5>查看包内存 <6>查看包名 ||\n")
print("|| <7>打开的包activity <8>冷热启动速度 <9> ||\n")
print(" ======================================================== \n")
def run(self):
self.show_menu()
num = int(input("输入选择的数字:"))
if num == 1:
print("========================================================== ")
print("|| <1>back按键 <2>home按键 <3>menu按键 ||\n")
print("|| <4>向下滑动 <5>向上滑动 <6>向左滑动 ||")
print("|| <7>向右滑动 <8>power按键 <9>退出程序 || ")
print(" ========================================================= \n")
num_click = int(input("输入选择的数字:"))
if num_click==1:
self.back()
elif num_click==2:
self.home()
elif num_click==3:
self.menu()
elif num_click==4:
self.down()
elif num_click==5:
self.up()
elif num_click==6:
self.left()
elif num_click==7:
self.right()
elif num_click==8:
self.power()
elif num_click==9:
while True:
try:
exit_flag = input("确定要退出吗 Yes or No")
if exit_flag == "Yes":
print("程序已经退出▁▁▁▂▂▂▃▃▅")
break
elif exit_flag=="No":
print("程序不会退出")
#continue
else:
return_home=int(input("您输入的功能有误,返回到主菜单输入 1"))
if return_home==1:
self.run()
else:
break
except:
pass
elif num == 2:
self.fill_rom()
os.system("pause")
self.run()
elif num == 3:
self.start_app()
os.system("pause")
self.run()
elif num == 4:
Event.package_version(self)
os.system("pause")
self.run()
elif num == 5:
self.package_meminfo()
os.system("pause")
self.run()
elif num==6:
print(self.package_name())
os.system("pause")
self.run()
elif num==7:
self.package_activity_name()
os.system("pause")
self.run()
elif num==8:
try:
self.start_speed()
os.system("pause")
except:
print("不支持该应用,或请输入正确包Activity,选项7可获取")
self.run()
def package_version(self): # 查看当前系统版本号
global name
name = "com"
i=self.package_name()
# a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").readlines()
# for i in a:
# if "com" in i:
# # a=i.split('/')[-2]
# i = i.split('/')[-2][34:]
os.system('adb shell "dumpsys package %s | grep version"' % i)
# return i
# print(list(i).enumerate(name))
# print(type(i))
# break
def package_meminfo(self):
global name
name = "com"
i=self.package_name()
self.a = os.popen("adb shell dumpsys window | findstr mCurrentFocus")
# for i in a:
# if "com" in i:
# # a=i.split('/')[-2]
# i = i.split('/')[-2][34:]
# print("当前应用包名是\t:", i)
os.system('adb shell "dumpsys meminfo %s\n\n"' % i)
# a = os.popen("adb shell dumpsys window | findstr mCurrentFocus")
# for i in a:
# if "com" in i:
# # a=i.split('/')[-2]
# i = i.split('/')[-1][34:]
# a = os.popen("adb shell am start -n %s" % i)
# print(a)
def fill_rom(self):
try:
a, i = input("输入填充的文件和内存的G数,用逗号隔开:").split(',')
count = int(i) * 1024
os.system("adb shell dd if=/dev/zero of=sdcard/{} bs=1024000 count={}".format(a, count))
print("填充中......")
except:
pass
def start_speed(self):
total = 0
TotalTime_sum = []
self.TotalTime = ""
self.WaitTime = ""
#activity=self.package_activity_name()
Hotcold_start = int(input('热启动输入1,冷启动输入2: '))
i = input("输入包名:")
number_sum = int(input("输入启动次数:"))
if Hotcold_start == 1:
# s=self.package_name()
for number in range(number_sum):
start = os.popen("adb shell am start -W {}".format(i)).read()
TotalTime = start.split('\n')[-4]
print("第{}启动耗时为".format(number + 1), TotalTime)
TotalTime_int = TotalTime.split(':')[-1]
TotalTime_int = int(TotalTime_int.strip())
TotalTime_sum.append(TotalTime_int)
sleep(2)
os.system("adb shell input keyevent KEYCODE_HOME")
sleep(3)
for ele in range(0, len(TotalTime_sum)):
total = total + TotalTime_sum[ele]
totaltime = total / number_sum
print("共执行的启动时间:%s\n平均时间:%s" % (TotalTime_sum, totaltime))
elif Hotcold_start == 2:
for number in range(number_sum):
start = os.popen("adb shell am start -W {}".format(i)).read()
app = self.package_name()
#print('app是:',app)
TotalTime = start.split('\n')[-4]
print("第{}启动耗时为".format(number + 1), TotalTime)
TotalTime_int = TotalTime.split(':')[-1]
TotalTime_int = int(TotalTime_int.strip())
TotalTime_sum.append(TotalTime_int)
sleep(2)
os.system("adb shell am force-stop {}".format(app))
sleep(2)
for ele in range(0, len(TotalTime_sum)):
total = total + TotalTime_sum[ele]
totaltime = total / number_sum
print("共执行的启动时间:%s\n平均时间:%s" % (TotalTime_sum, totaltime))
# class App():
""""启动速度"""
# def __init__(self, pagename, firstActivity):
# """构造方法"""
# self.pagename = pagename
# self.firstActivty = firstActivity
# self.content = "" # 执行命令的文本
# self.startTime = "" # 启动的时间 #
#
# def startApp(self):
# """开启app"""
# cmd = "adb shell am start -W -n com.android.camera/com.android.camera.Camera"
# self.content = os.popen(cmd)
#
# def stopApp(self):
# """停止app"""
# cmd = "adb shell am force-stop com.android.camera/com.android.camera.Camera"
# os.popen(cmd)
#
# def getStartTime(self):
# """获取启动时间"""
# for line in self.content.readlines():
# if "ThisTime" in line:
# self.startTime = line.split(":")[1]
# break
# return self.startTime
def package_activity_name(self):
a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read()
aa=a.index('com')
package_name = ''.join(a)[aa:-2:]
print(package_name)
return package_name
def package_name(self):
a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").read()
#print(a)
aa=a.index('com')
i = a.split('/')[-2][aa:] # 这样作为
return i
# for i in a:
# if "com" in i:
# # a=i.split('/')[-2]
# i = i.split('/')[-2][aa:] #这样作为
# print(i)
# return i
#
def start_app(self):
""""以下已经完成"""
name = "com"
a = os.popen("adb shell dumpsys window | findstr mCurrentFocus").readlines()
print('a的actity为',a)
global package_name
package_name = ''.join(a)[34:-2:] #字符串切片
print('包名是',package_name)
return package_name
# b = ''.join(a)
# print('b通过.join合并成字符串',b)
# str1=b[34:-2:]
# print('str1新的Activity',str1)
#os.system("adb shell am start -n%s" % str1)
#print(str1)
# for i in a:
# if "com" in i:
# # a=i.split('/')[-2]
# i = i.split('/')[34:]
# print(i)
# print(b,type(b))
# c=b.split()
# print(c,type(c))
# test = [i for i in a if i != '']
# print(test)
#os.system("adb shell am start -n%s" % a)
#print(a)
#
#
def back(self):
keyname = self.KEYCODE_BACK
' 执行adb keyevent事件 参数从Event类里面关联'
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 点击home键
def home(self):
keyname = self.KEYCODE_HOME
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 点击菜单键
def menu(self):
keyname = self.KEYCODE_MENU
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 按一下电源键
def power(self):
keyname = self.KEYCODE_POWER
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 向上滑动
def up(self):
keyname = self.KEYCODE_DPAD_UP
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 向下滑动
def down(self):
keyname = self.KEYCODE_DPAD_DOWN
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 向左滑动
def left(self):
keyname = self.KEYCODE_DPAD_LEFT
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 向右滑动
def right(self):
keyname = self.KEYCODE_DPAD_RIGHT
adb = 'adb shell input keyevent %s' % keyname
os.system(adb)
# 模拟点击屏幕指定位置
# adb shell input tap 500 500
# 3. 模拟滑动
# 从(500,800)滑动到(500,300)
# adb shell input swipe 500 800 500 300
if __name__ == '__main__':
#aa = Event().run()
aa=Event().run()
ADB
最新推荐文章于 2021-10-12 17:43:23 发布