Android-APP启动时间-for Python

一、获取APP启动时间

1、adb命令行获取
adb shell am start -S -W com.xxxx.xxxx/com.xxxx.biz.main.ui.activity.SplashPageActivity

-S:表示每次启动前先强行停止

2、python执行adb命令

import subprocess
res = subprocess.Popen('adb shell am start -S -W com.xxxx.xxxx/com.xxxx.biz.main.ui.activity.SplashPageActivity', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
result = res.stdout.readlines()

3、拆解结果中所需要的数据

# 系统启动APP耗时
WaitTime = str(result[-2]).split(':')[-1].replace("\\n'", '')
# APP启动耗时
TotalTime = str(result[-3]).split(':')[-1].replace("\\n'", '')
66B2EDAD-896B-4C29-9E4E-7EC3EB5DE31A.png

二、数据写入Excel表格

1、引入openpyxl处理表格内容

from openpyxl import Workbook

# 创建一个新的工作簿
wb = Workbook()
# 获取默认sheet
ws = wb.active
ws.title = "DefaultSheet"

2、需要获取每次启动时间和平均值

ws['A1'] = '序号'
ws['B1'] = 'WaitTime'
ws['C1'] = 'TotalTime'
ws['D1'] = 'WaitTime平均值'
ws['E1'] = 'TotalTime平均值'

#保存累加结果,计算平均值
launchlist = []

3、写入数据,假设共启动了10次

    for index in range(0, 10):
        # 写入每次启动时间
        ws['B' + str(index + 2)] = WaitTime
        ws['C' + str(index + 2)] = TotalTime
        averWaitTime += WaitTime
        averTotalTime += TotalTime

    # 计算平均值
    ws['D2'] = averWaitTime / 10
    ws['E2'] = averTotalTime / 10

    #写完后,一定要保存文件
    wb.save('/Users/username/Desktop/comment.xlsx')

三、创建折线图

1、引入折线图包

from openpyxl.chart import (
    LineChart,
    Reference,
)
lineimage = LineChart()

2、折线图属性

#折线图标题
lineimage.title = "启动时间"
#Y轴标题
c2.y_axis.title = "耗时(ms)"
#X轴标题
c2.x_axis.title = "Date"

3、添加数据

# 折线图原始数据获取,min_col:起始列;min_row:起始行;max_col:结束列;max_row:结束行
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=count)
lineimage.add_data(data, titles_from_data=True)
# X轴数据显示,min_col:起始列;min_row:起始行;max_row:结束行
dates = Reference(ws, min_col=1, min_row=2, max_row=count)
lineimage.set_categories(dates)

四、结果示例

56D394F1-95FC-45B0-A9DF-3106AB15DEF0.png

五、完整代码


import subprocess
from openpyxl import Workbook
from openpyxl.chart import (
    LineChart,
    Reference,
)

# 创建一个新的工作簿
wb = Workbook()
# 获取默认sheet
ws = wb.active
ws.title = "DefaultSheet"
ws['A1'] = '序号'
ws['B1'] = 'WaitTime'
ws['C1'] = 'TotalTime'
ws['D1'] = 'WaitTime平均值'
ws['E1'] = 'TotalTime平均值'

launchlist = []


def adbrun(cmd):
    res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
    result = res.stdout.readlines()
    return result


def launch():
    # -S:表示每次启动前先强行停止
    cmd_start = 'adb shell am start -S -W com.xxxx.xxxx/com.xxxx.biz.main.ui.activity.SplashPageActivity'
    result = adbrun(cmd_start)
    # 系统启动APP耗时
    WaitTime = str(result[-2]).split(':')[-1].replace("\\n'", '')
    # APP启动耗时
    TotalTime = str(result[-3]).split(':')[-1].replace("\\n'", '')

    return {'WaitTime': int(WaitTime), 'TotalTime': int(TotalTime)}


def writeexcel(launchlist):
    averWaitTime = 0
    averTotalTime = 0
    for index in range(0, len(launchlist)):
        # 为X轴添加序列号
        ws['A' + str(index + 2)] = index + 1

        # 写入每次启动时间
        WaitTime = launchlist[index]['WaitTime']
        TotalTime = launchlist[index]['TotalTime']
        ws['B' + str(index + 2)] = WaitTime
        ws['C' + str(index + 2)] = TotalTime
        averWaitTime += WaitTime
        averTotalTime += TotalTime

    # 计算平均值
    ws['D2'] = averWaitTime / len(launchlist)
    ws['E2'] = averTotalTime / len(launchlist)
    wb.save('/Users/username/Desktop/comment.xlsx')

    linechart(len(launchlist))


def linechart(count):
    lineimage = LineChart()
    lineimage.title = "启动时间"

    # 折线图原始数据获取,min_col:起始列;min_row:起始行;max_col:结束列;max_row:结束行
    data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=count+1)
    lineimage.add_data(data, titles_from_data=True)
    # X轴数据显示,min_col:起始列;min_row:起始行;max_row:结束行
    dates = Reference(ws, min_col=1, min_row=2, max_row=count+1)
    lineimage.set_categories(dates)

    # 折线图添加的位置
    ws.add_chart(lineimage, "G2")

    wb.save('/Users/username/Desktop/comment.xlsx')


if __name__ == '__main__':
    for index in range(0, 10):
        launchlist.append(launch())

    writeexcel(launchlist)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容