adb測試流量

2021-08-28 02:43:52 字數 3240 閱讀 1786

# coding:utf-8

import subprocess

import time

#獲取乙個裝置裡面的所有包和流量(如果wifi和資料流量都為0,則不展示)

'''adb shell dumpsys package packages | findstr /c:"userid" /c:"package ["

adb shell cat /proc/net/xt_qtaguid/stats | find "userid"

'''def get_uids_and_packages():

'''獲取所有的uids和packages

:return:

'''uids=

uid=''

packages=

package=''

cmd='adb shell dumpsys package packages | findstr /c:"userid" /c:"package ["'

proc=subprocess.popen(cmd,stdout=subprocess.pipe,stderr=subprocess.pipe,shell=true)

output=proc.communicate()[0]

for line in output.split('\n'):

#判斷結果裡面是否有userid

if 'userid=' in line:

#找到 userid= 的下標

index=line.find('userid=')

#從 userid= 的下標+7,開始遍歷,直到字串結束

for i in range((index+7),len(line)):

#如果是數字,就拼接到uid

if line[i].isdigit():

uid=uid+line[i]

else:

#不是數字的時候,就停止拼接,初始化uid

uid=''

break

#判斷結果裡面是否有package [

elif 'package [' in line:

#找到 package [ 的下標

index_start=line.find('[')

index_end=line.find(']')

#從"["到"]"這裡面的是package

package=line[index_start+1:index_end]

return [uids,packages]

def remove_duplicate_uid():

'''去掉重複的uid,獲得整個裝置的uid,package

:return:

'''uids=get_uids_and_packages()[0]

packages=get_uids_and_packages()[1]

uid_and_packages=

for i in range(len(packages)):

#單個uid和package

uid_package=

#判定是否有重複的uid的標誌位

flag=0

for up in uid_and_packages:

#如果要加入的pid與已經存在相同,標誌位置為1

if up[0] == uids[i]:

flag=1

#如果有重複的就去掉重複的,不新增

if flag==0:

return uid_and_packages

def get_per_flow(uid):

'''根據uid獲取流量

:param uid:

:return:

'''#獲取流量的adb命令

cmd='adb shell cat /proc/net/xt_qtaguid/stats | find "'+uid+'"'

proc=subprocess.popen(cmd,stdout=subprocess.pipe,stderr=subprocess.pipe,shell=true)

output=proc.communicate()[0].split('\n')

#資料流量

rmnet=0

#wifi流量

wlan=0

for line in output:

#第6列資料是下行/接收流量,第八列資料是上行/傳送流量

if 'rmnet' in line:

rmnet=rmnet+int(line.split(' ')[5])+int(line.split(' ')[7])

elif 'wlan' in line:

wlan=wlan+int(line.split(' ')[5])+int(line.split(' ')[7])

return rmnet,wlan

def get_flows():

'''獲取所有的包名和對應流量

:return:返回資料為 [[包名1,資料流量1,wifi流量1],[包名2,資料流量2,wifi流量2],[包名3,資料流量3,wifi流量3]...]

'''package_flows=

for uid_package in remove_duplicate_uid():

rmnet=0

wlan=0

package_flow=

#根據每乙個uid查到對應的資料流量和wifi流量

rmnet,wlan=get_per_flow(uid_package[0])

#如果資料流量和wifi流量都為0,就不統計

if rmnet==0 and wlan==0:

pass

else:

# print(uid_package[1]+':\n'+'data:'+str(rmnet)+',wifi:'+str(wlan)+'\n')

#新增包

#新增資料流量

#新增wifi流量

print(package_flows)

print(len(package_flows))

return package_flows

if __name__=='__main__':

print(time.strftime('%y-%m-%d %h:%m:%s',time.localtime()))

get_flows()

print(time.strftime('%y-%m-%d %h:%m:%s',time.localtime()))

adb 測試命令

模擬器,不用還不行,改一行 就真機測試也不實際,是吧。adb這個指令 要說簡單,網上一大把,但是一些細節總是不注意,可能大家不用吧,或者ddms直接搞,但是我很喜歡命令,覺得ide環境找啊找好頭疼 adb push 簡單說把乙個電腦檔案弄到模擬器上 adb push home hello somef...

adb測試記憶體

coding utf 8 import subprocess import time import datetime adb shell dumpsys meminfo find com.android.settings 設定結果儲存路徑 csv path d autotest meminfo.cs...

效能測試 流量測試

原文資料 流量篇最近在研究ios 的效能測試,時間太緊沒來得及發帖,加通宵擠出時間給大家分享一點東西,希望對大家有所幫助!android 2.2之前 對於android2.2 的流量 版本以前的系統的流量資訊都存放在 proc net dev 或者 proc self net dev 檔案下,讀取檔...