def __init__(self, strPackageName): self.DEFAULT_ADDRESS = ("localhost", 5037) self.adb = Adb(self.DEFAULT_ADDRESS) self.strPackageName = strPackageName self.strUID = self.__get_UID() self.listProcessInfo = self.__init_processInfo() self.deviceAPILevel = self.__get_androidAPILevel()
def adb(): # Restart ADB adb = Adb(DEFAULT_ADDRESS) adb.kill() proc = AdbProcess("adb", DEFAULT_ADDRESS) proc.start() return adb
def __init__(self): ''' AndroidHandler构造函数 ''' self.__adb = Adb() self.__devices_list = self.__getConnection() if len(self.__devices_list) == 0: raise NoDeviceConnectionException self.__get_system_properties()
def __init__(self): ''' AndroidHandler构造函数 ''' if self._adb == None: self._adb = Adb()
def adb(): adb = Adb(()) adb.socket = MagicMock() return adb
def num_devices(): if adb_active(): a = Adb(DEFAULT_ADDRESS) return len(a.devices())
def test_get_devices(self): ############################## # 1. 获取ABDpy实例 # #1. 获取ADBpy实例 __adbpy = Adb() ############################# # 2. 获取PID_LIST # #2.1. 运行设备端命令: ps | grep taobao, 获取淘宝相关进程PID命令原始返回字符串 __retval_1 = __adbpy.shell("ps | grep taobao") # print "Org_str: \t" + __retval_1 #2.2 将命令返回原始字符串,按行拆分为PID数据记录 __pid_list = __retval_1.split("\n") # print "PID List: %s : %s" % (type(__pid_list), __pid_list) #2.3 遍历pid列表,获取每一个PID记录中的PID值 #2.4 定义一个列表容器,去存储获取的PID值 __pids = [] #2.5 遍历PID数据记录列表中的PID数据 for __pid in __pid_list: #2.5.1 如果PID数据的长度<5个字符,则无效 if len(__pid) < 5: pass #2.5.2 如果为有效数据,则按" "拆分,获取其中的第4个元素,即PID的值,存储至__pids容器里 else: __pid = __pid.split(" ")[3] __pids.append(__pid) print("[INFO]PID_LIST= %s" % __pids) ############################# # 3. 获取PID_PSS # # 获取PIDs容器中的每一个PID对应的PSS TOTAL值 #3.1. 定义一个容器,用来存储 Tupple->(PID,PSS) __pid_pss_info = [] #3.2. 遍历pid,获取每一个pid对应的PSS Tupple数据 for __pid in __pids: # print "__pid = " + __pid #3.2.1 使用dumpsys meminfo ${pid}这个命令,获取原始的返回值 __returnValue = __adbpy.shell("dumpsys meminfo %s" % __pid) #3.2.2 将原始的命令返回值,按行拆分成可以处理的信息 __pid_mem_info = __returnValue.split('\n') # print "__pid info = %s" % __pid_mem_info #3.2.3 遍历每一信息,根据标记位获取PSS TOTAL值 for i in range(len(__pid_mem_info)): #3.2.3.1 如果这行信息中还有,标记"Unkonwn",则他的下一行是目标行 if __pid_mem_info[i].count("Unknown"): # print "Total: %s" % __pid_mem_info[i+1] #3.2.3.2 获取标记Unkonwn行的下一行 __pss_info = __pid_mem_info[i + 1] #3.2.3.3 使用自定义的mem数据拆分方法进行pss info行数据的拆分,拆分后的第2个数值为PSS值 __pss = self.split_memRec(__pss_info)[1] # print "PSS = %s" % __pss #3.2.3.4 将当前PID与PSS值,组合成tuplle数据,存入__pid_pss_info数据结构中 __pid_pss_info.append((__pid, __pss)) #完成类所有PID及其对应的PSS值的获取 print('[INFO] PID_PSS = %s' % __pid_pss_info) ############################# # 4. 计算AUT PSS总占用值 # # 获取PIDs容器中的每一个PID对应的PSS TOTAL值 #进行AUT 总PSS占用的计算 #4.1. 先定义一个变量,记录总PSS值 __total_pss = 0 #4.2. 遍历PSS INFO列表中的每一个PID_PSS Tupple数据 for __pss in __pid_pss_info: #2.1 获取Tuplle中的PSS值,下标为[1],进行累加 __total_pss += int(__pss[1]) #4.3. 获取类AUT 总PSS占用 print("[INFO] AUT_PSS = %s" % __total_pss)