python-appium監測APP啓動用時

需求:模擬用戶打開APP的操作,記錄啓動用時

# -*- coding: utf-8 -*-
# @Author  : sunyue

'''
本腳本測試app的單個冷啓動時間
整體思路:啓動前記錄當前時間,啓動後識別到目標控件記錄當前時間,兩次時間相減即爲啓動時間
'''

from appium import webdriver
from datetime import datetime
import time
from selenium.webdriver.support.ui import WebDriverWait

class bv_start:
    def platform(self, Version, Package, Activity):
        desired_caps={}
        desired_caps['platformName'] = 'Android'      #平臺名稱
        desired_caps['deviceName'] = 'aaa'         #設備名稱
        desired_caps['platformVersion'] = Version     #平臺版本
        desired_caps['appPackage'] = Package              #包名
        desired_caps['appActivity'] = Activity             #包入口
        desired_caps['noReset'] = True                 #不重置狀態
        driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  #啓動服務/通過4723端口來建立一個會話
        self.driver = driver
        time.sleep(3)       #等待3s

    def execute(self, t, name, check):
        '''
        :param t: 表示需要測試的次數,
        :param name:測試應用安裝在手機上後在手機上顯示的應用名稱
        :param check:識別的控件,設置需要識別的控件,識別到就記錄當前時間
        '''
        self.driver.keyevent(3)
        Total_time = []
        for i in range(t):
            WebDriverWait(self.driver, 60).until(lambda x: x.find_element_by_android_uiautomator('new UiSelector().text("%s")'%(name)))
            self.driver.find_element_by_android_uiautomator('new UiSelector().text("%s")'%(name)).click()      #點擊啓動APP
            start_time = datetime.now()                #獲取啓動前用時
            while True:                           #循環的查找界面上的控件直到找到需要的停止並記錄時間
                Str = self.driver.page_source
                keyword = check
                if keyword in Str:
                    last_time = datetime.now()               #獲取啓動後用時
                    break
            t = last_time - start_time          #得到總用時
            rt = str(t).split(":")               # 通過split函數對總用時進行切割,用來提取秒和毫秒,產生一個列表rt
            a = int(rt[1]) * 60                         # 提取分鐘
            r = float(rt[2])                            # 提取到秒和毫秒
            run_time = a + r
            Total_time.append(run_time)
            self.driver.keyevent(3)
        print(Total_time)
        
if __name__ == "__main__":
    wb = bv_start()
    wb.platform('9', 'com.google.android.apps.messaging', 'com.google.android.apps.messaging.ui.ConversationListActivity')
    wb.execute(5, '微博', '首頁')    	#測試5次求平均值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章