adb获取性能数据的常用方法

获取包名

def get_package_name(udid):
    pattern = re.compile(r"[a-zA-Z0-9\.]+/.[a-zA-Z0-9\.]+")
    #shell dumpsys window w |findstr \/ |findstr name
    getPackNameCmd = "adb -s" + " " + udid + " " + "shell dumpsys window w |findstr \/ |findstr name="
    print(getPackNameCmd)
    packageText = subprocess.Popen(getPackNameCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    packageInfo = (str(packageText)).split('=')[2]
    packageName = pattern.findall(packageInfo)[0].split('/')[0]
    return packageName

获取活动名


def get_activity_name(udid):
    pattern = re.compile(r"[a-zA-Z0-9\.]+/.[a-zA-Z0-9\.]+")
    getActivityCmd = "adb -s" + " " + udid + " " + "shell dumpsys window w |findstr \/ |findstr name="
    packageText = subprocess.Popen(getActivityCmd, shell=True, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE).stdout.read()
    packageInfo = (str(packageText)).split('=')[2]
    print("当前包信息", packageInfo)
    activityName = pattern.findall(packageInfo)[0].split('/')[1]
    print("当前活动名", activityName)
    return activityName

获取apk包内存占用情况

# 获取apk包内存占用情况
def mem(udid):
    memCmd = 'adb -s '+ udid + ' shell dumpsys meminfo ' + get_package_name(udid)
    # print("内存命令",memCmd)
    menTextList = subprocess.Popen(memCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.readlines()
    # print("内存信息",menTextList)
    for memInfo in menTextList:
        if len(memInfo.split())>0 and memInfo.split()[0].decode() == "TOTAL":
            mem = int(memInfo.split()[1].decode())//1024
            print("内存占用",mem, "M")
            # men_list = str(info.split()[1].decode())
    return mem

获取cpu占用率

# 获取cpu占用率
def cpu(udid):
    cpuCmd = 'adb -s ' + udid + ' shell top -n 1| findstr ' + get_package_name(udid)
    print ("cpu占用命令",cpuCmd)
    cpuText = subprocess.Popen(cpuCmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.readlines()
    print("cpu信息", cpuText)
    if len(cpuText) >= 1:
        cpu = str(cpuText[0].split()[4])
        cpu = cpu.split("'")[1]
        print("cpu",cpu)
        # cpu_list.append(int(top_info[0].split()[2][0:-1]))

获取电池温度,剩余电量和实时温度

def gettem(udid):
    # 电池剩余电量和实时温度
    batteryCmd = 'adb -s ' + udid + ' shell "dumpsys  battery | grep "level:""'
    batteryText = subprocess.Popen(batteryCmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()

    batteryTemperatureCmd = 'adb -s ' + udid + ' shell "dumpsys  battery | grep "temperature:""'
    batteryTemperatureText = subprocess.Popen(batteryTemperatureCmd,stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    # print("电量信息",batteryText)
    # print("电池温度信息", batteryTemperatureText)
    battery = int(batteryText.split()[1])
    print("剩余电量", battery)

    batteryTemp = int(batteryTemperatureText.split()[1])/10
    print("电池温度",batteryTemp)

    #  cpu温度
    cpuTemperatureText = subprocess.Popen('adb -s ' + udid + ' shell cat /sys/class/thermal/thermal_zone9/temp',
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.read()
    cpuTemp = int(cpuTemperatureText.split()[0])/1000
    print("cpu温度",cpuTemp)

你可能感兴趣的:(安卓,软件测试,python)