网页响应速度

结合单元测试框架unittest,直接贴代码:
# -*- coding: utf-8 -*-
import unittest
from selenium import webdriver
#from object.DRIVER import getDriver
import time,queue
import login_page,BasePage


class UntitledTestCase(unittest.TestCase):
    def setUp(self):
        #Options = webdriver.Firefox()
        #Options.add_argument('--headless')
        # self.driver = webdriver.Chrome(chrome_options=Options)
        self.q = queue.Queue()
        self.driver = webdriver.Firefox()
        #self.driver = getDriver()
        self.verificationErrors = []
        self.accept_next_alert = True
        self.img = """           // 首屏图片加载完成 
                            let mytiming = window.performance.timing;
                            return window.lastImgLoadTime - mytiming.navigationStart ;
                """
        self.intfaces = """   https://blog.csdn.net/weixin_42284354/article/details/80416157
        // 接口完成加载完成 
                            let mytiming = window.performance.timing;
                            return Report.SPEED.LASTCGI - mytiming.navigationStart ;
                """
        self.DNS = """          // DNS查询耗时 
                    let mytiming = window.performance.timing;
                    return mytiming.domainLookupEnd - mytiming.domainLookupStart ;
        """
        self.TCP = """          // TCP链接耗时 
                    let mytiming = window.performance.timing;
                    return mytiming.connectEnd - mytiming.connectStart ;
        """
        self.request = """          // request请求耗时 
                    let mytiming = window.performance.timing;
                    return mytiming.responseEnd  - mytiming.responseStart ;
        """
        self.dom = """          //  解析dom树耗时 
                    let mytiming = window.performance.timing;
                    return mytiming.domComplete - mytiming.domInteractive ;
        """
        self.Ari = """          // 白屏时间 
                    let mytiming = window.performance.timing;
                    return mytiming.responseStart - mytiming.navigationStart ;
        """

        self.domready = """          // domready时间 
                    let mytiming = window.performance.timing;
                    return mytiming.domContentLoadedEventEnd   - mytiming.fetchStart ;
        """
        self.loadEventTime = """
                   let mytiming = window.performance.timing;
                   return mytiming.loadEventEnd - mytiming.navigationStart ;
                      """
        '''
        self.gather_data_dict = [
            {'UrlName': '简化平台',
             'Url': 'http://39.98.160.184:9999/',
             'number': 3}
        ]
        '''
        # 添加压测网址,在数组汇总添加一个 Dict即可
        self.gather_data_dict_ = [
            {'UrlName': '首页',
             'Url': 'http://39.98.160.184:9999/Manager/default.aspx',
             'number': 3},
            {'UrlName': '用户列表',
             'Url': 'http://39.98.160.184:9999/Manager/Module/tb_User/UserDefault.aspx',
             'number': 3},
            {'UrlName': '群组列表',
             'Url': 'http://39.98.160.184:9999/Manager/Module/tb_ChatGroup/Default.aspx',
             'number': 3}
        ]


    def test_untitled_test_case(self):
        self.driver.implicitly_wait(30)

        # 返回结果
        result = []
        # 读取压测数数据,返回加载结果!
        for data in self.gather_data_dict_:
            result_temp = {
                "UrlName": data["UrlName"],
                "Url": data["Url"],
                "number": data["number"],
                "NoCache": self.__get_page_load_time_NoCache(data['Url'], data['number']),
                #"Cache": self.__get_page_load_time_Cache(data['Url'], data['number'])
            }
            result.append(result_temp)
        print(result)

    def __get_page_load_time_NoCache(self, Url, number):
        """
        网页无缓存的情况下进行加载速度测试
        :param Url: 加载的网址
        :param number: 加载次数
        :return:
        """

        driver = self.driver
        login_url = 'http://39.98.160.184:9999/'
        driver.get(login_url)
        self.login_page = login_page.LoginPage(self.driver)
        self.login_page.input_name("dlswxw")
        self.login_page.input_pwd("12")
        self.login_page.login_click()
        self.basepage = BasePage.BasePage(self.driver)
        if self.basepage.isElementExist('huanying'):
            self.__get_page_load_time_NoCache_res(Url, number)
            self.login_page.logout_click()
            return self.q.get()
        else:
            self.login_page.comfir_login()
            self.__get_page_load_time_NoCache_res(Url, number)
            self.login_page.logout_click()
            return self.q.get()

    def __get_page_load_time_NoCache_res(self, Url, number):
        """
                网页无缓存的情况下进行加载速度测试
                :param Url: 加载的网址
                :param number: 加载次数
                :return:
                  """
        driver = self.driver
        page = []
        domready = []
        res_page = {}
        res_domready = {}
        for i in range(number):
            # 调用浏览器打开一个新窗口
            driver.execute_script("window.open('','_blank');")
            # 窗口定位到新打开的窗口
            driver.switch_to.window(driver.window_handles[-1])
            driver.get(Url)
            page.append(int(driver.execute_script(self.loadEventTime)))
            domready.append(int(driver.execute_script(self.domready)))
            time.sleep(0.5)
            # 关闭窗口
            driver.execute_script("window.close();")
            # 窗口定位返回旧窗口
            driver.switch_to.window(driver.window_handles[-1])

        res_page['max'] = max(page)
        res_page['min'] = min(page)
        res_page['avg'] = sum(page) / len(page)
        #print(res_page)
        res_domready['max'] = max(domready)
        res_domready['min'] = min(domready)
        res_domready['avg'] = sum(domready) / len(domready)
        #print(res_domready)

        self.q.put({"res_page": res_page,
                "res_domready": res_domready})

    def __get_page_load_time_Cache(self, Url, number=5):
        """
        网页有缓存的情况下进行加载速度测试
        :param Url: 加载的网址
        :param number: 加载次数
        :return:
        """
        driver = self.driver
        page = []
        domready = []
        res_page = {}
        res_domready = {}
        driver.get(Url)
        for i in range(number):
            driver.get(Url)
            page.append(int(driver.execute_script(self.loadEventTime)))
            domready.append(int(driver.execute_script(self.domready)))

        res_page['max'] = max(page)
        res_page['min'] = min(page)
        res_page['avg'] = sum(page) / len(page)

        res_domready['max'] = max(domready)
        res_domready['min'] = min(domready)
        res_domready['avg'] = sum(domready) / len(domready)

        return {"res_page": res_page,
                "res_domready": res_domready}

    def tearDown(self):
        self.driver.quit()

login_page :
import os
from BasePage import BasePage


#logger = Logger("loginpage").getlog()  # 加日志的


class LoginPage(BasePage):  # 一定要继承这几个类
    '''
            加载页面元素位置

    global element, dir
    dir = os.path.abspath('.').split('src')[0]
    readelements = ReadExcle(dir + "/PageElements/user.xls")  # 表名
    element, listjs = readelements.get('login')  # sheetname


            页面操作,调用了basepage里边的方法
   '''

    def input_name(self, text):  # 输入用户名
        self.input('LoginName', text)  # 需要调用数据库里的参数

    def input_pwd(self, text):  # 输入密码
        self.input('LoginPass', text)

    def login_click(self):  # 点击登陆
        self.click('Button1')

    def comfir_login(self):  #点击强制登录
        self.click('Message_Button1')

    def logout_click(self):  #点击退出
        self.click('Span2')




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值