话不多说,直接上脚本:
#/usr/bin/python #encoding:utf-8 import csv import os import time class App(object): def __init__(self): self.content = "" self.startTime = 0 #启动App def LaunchApp(self): print("启动程序.....") cmd = 'adb shell am start -W -n com.android.browser/.BrowserActivity' self.content=os.popen(cmd) #停止App def StopApp(self): #冷启动 #cmd = 'adb shell am force-stop com.android.browser' #热启动 cmd = 'adb shell input keyevent 3' print("关闭程序......") os.popen(cmd) #获取启动时间 def GetLaunchedTime(self): for line in self.content.readlines(): if "ThisTime" in line: self.startTime = line.split(":")[1].strip() break return self.startTime #控制类 pasedtime:启动时间 class Controller(object): def __init__(self, count): self.app = App() self.counter = count self.alldata = [("currenttime", "pasedtime")] #单次测试过程 def testprocess(self): self.app.LaunchApp() time.sleep(5) elpasedtime = self.app.GetLaunchedTime() self.app.StopApp() time.sleep(3) currenttime = self.getCurrentTime() self.alldata.append((currenttime, elpasedtime)) #多次执行测试过程 def run(self): while self.counter >0: self.testprocess() self.counter = self.counter - 1 #获取当前的时间戳 def getCurrentTime(self): currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) return currentTime #数据的存储 def SaveDataToCSV(self): csvfile = open('starttime.csv', 'wb') writer = csv.writer(csvfile) writer.writerows(self.alldata) csvfile.close() if __name__ == "__main__": controller = Controller(2) controller.run() controller.SaveDataToCSV() 2.内存: #/usr/bin/python #encoding:utf-8 import csv import os import time """ 请先用命令行运行 adb shell top -d num--->(数字是收取数据间隔时间) 收取数据,并且另存为meminfo """ #控制类 class Controller(object): def __init__(self): #定义收集数据的数组 vss:虚拟耗用内存(包含共享库占用的内存) rss:实际使用物理内存(包含共享库占用的内存) self.alldata = [("id", "vss", "rss")] #分析数据 def analyzedata(self): content = self.readfile() i = 0 for line in content: if "com.android.browser" in line: print (line) line = "#".join(line.split()) vss = line.split("#")[5].strip("K") rss = line.split("#")[6].strip("K") #将获取到的数据存到数组中 self.alldata.append((i, vss, rss)) i = i + 1 #数据的存储 def SaveDataToCSV(self): csvfile = open('meminfo.csv', 'wb') writer = csv.writer(csvfile) writer.writerows(self.alldata) csvfile.close() #读取数据文件 def readfile(self): mfile = open("meminfo", "r") content = mfile.readlines() mfile.close() return content if __name__ == "__main__": controller = Controller() controller.analyzedata() controller.SaveDataToCSV() 3.流量 #/usr/bin/python #encoding:utf-8 import csv import os import string import time #控制类 class Controller(object): def __init__(self, count): #定义测试的次数 self.counter = count #定义收集数据的数组 traffic:总流量 self.alldata = [("timestamp", "traffic")] #单次测试过程 def testprocess(self): #执行获取进程的命令 result = os.popen("y_adb shell ps | findstr com.android.browser") #获取进程ID pid = result.readlines()[0].split(" ")[4] #获取进程ID使用的流量 traffic = os.popen("y_adb shell cat /proc/"+pid+"/net/dev") for line in traffic: if "lo" in line: #将所有空行换成# line = "#".join(line.split()) #按#号拆分,获取收到和发出的流量 receive = line.split("#")[1] transmit = line.split("#")[9] elif "eth1" in line: # 将所有空行换成# line = "#".join(line.split()) # 按#号拆分,获取收到和发出的流量 receive2 = line.split("#")[1] transmit2 = line.split("#")[9] #计算所有流量的之和 alltraffic = string .atoi(receive) + string .atoi(transmit) + string .atoi(receive2) + string .atoi(transmit2) #按KB计算流量值 alltraffic = alltraffic/1024 #获取当前时间 currenttime = self.getCurrentTime() #将获取到的数据存到数组中 self.alldata.append((currenttime, alltraffic)) #多次测试过程控制 def run(self): while self.counter >0: self.testprocess() self.counter = self.counter - 1 #每5秒钟采集一次数据 time.sleep(5) #获取当前的时间戳 def getCurrentTime(self): currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) return currentTime #数据的存储 def SaveDataToCSV(self): csvfile = open('traffic.csv', 'wb') writer = csv.writer(csvfile) writer.writerows(self.alldata) csvfile.close() if __name__ == "__main__": controller = Controller(2) controller.run() controller.SaveDataToCSV() 4.电量 #/usr/bin/python #encoding:utf-8 import csv import os import time #控制类 class Controller(object): def __init__(self, count): #定义测试的次数 self.counter = count #定义收集数据的数组 power:电量,timestamp:时间 self.alldata = [("timestamp", "power")] #单次测试过程 def testprocess(self): #执行获取电量的命令 result = os.popen("adb shell dumpsys battery") #获取电量的level for line in result: if "level" in line: power = line.split(":")[1].strip() #获取当前时间 currenttime = self.getCurrentTime() #将获取到的数据存到数组中 self.alldata.append((currenttime, power)) #多次测试过程控制 def run(self): #设置手机进入非充电状态 os.popen("adb shell dumpsys battery set status 1") while self.counter >0: self.testprocess() self.counter = self.counter - 1 #每5秒钟采集一次数据 time.sleep(5) #获取当前的时间戳 def getCurrentTime(self): currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) return currentTime #数据的存储 def SaveDataToCSV(self): csvfile = open('dianliang.csv', 'wb') writer = csv.writer(csvfile) writer.writerows(self.alldata) csvfile.close() if __name__ == "__main__": controller = Controller(5) controller.run() controller.SaveDataToCSV() 5.cpu #/usr/bin/python #encoding:utf-8 import csv import os import time #控制类 cpustatus:cpu利用率 class Controller(object): def __init__(self, count): self.counter = count self.alldata = [("timestamp", "cpustatus")] #单次测试过程 def testprocess(self): result = os.popen("adb shell dumpsys cpuinfo | findstr com.android.browser") for line in result.readlines(): cpuvalue = line.split("%")[0] currenttime = self.getCurrentTime() self.alldata.append((currenttime,cpuvalue)) print(self.alldata) #多次执行测试过程 def run(self): while self.counter >0: self.testprocess() self.counter = self.counter - 1 time.sleep(3) #获取当前的时间戳 def getCurrentTime(self): currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) return currentTime #数据的存储 def SaveDataToCSV(self): csvfile = open('cpcinfo.csv', 'wb') writer = csv.writer(csvfile) writer.writerows(self.alldata) csvfile.close() if __name__ == "__main__": controller = Controller(2) controller.run() controller.SaveDataToCSV() |
|