oracle order by效率慢_页面加载速度太慢,一招教你提升测试效率 !

738b2626dc777aaf5c88ecb370fc0b2f.gif点击上方 蓝字关注我们~

Hello,大家周六好呀,我是你们的软件测试大师

夏日炎炎,今天大家是不是都出去水上乐园解暑了呢?

455ece79274b18d84f8d52b80daf27cd.gif

大湿今天给大家带来了:页面加载速度太慢,一招教你提升测试效率

1

遇见问题

在进行 Web 自动化测试的时候,经常会碰到一些加载非常慢的页面。

这些页面加载之所以慢有很多种原因:

  1. 页面本来就有非常多资源需要加载,通常是首页;

  2. 页面使用了一些不是很稳定的外部依赖,比如调用了不成熟的

  3. CSS 样式库和 js 库;

  4. 公司服务器处理能力有限;

  5. 开发人员的代码写得不好,等等。

2e04df39b2043a3a529e1f044681d314.png

2

分析问题

如果我们想进行自动化测试,首先需要通过 webdriver 的get 方法打开页面,但是因为页面加载时间过长,后面的操作无法进行,甚至直接报错,对自动化测试的运行效率影响非常大。

class TestLogin(unittest.TestCase):   

def test_login_success(self):  

# 初始化浏览器      

driver=webdriver.Chrome()                  driver.implicitly_wait(20)  

url = 'http://lemonban_url'       

driver.get(url)    

#登录                driver.find_element_by_name('phone').send_keys(current_phone)      

pwd_elem = driver.find_element_by_name('password')   pwd_elem.send_keys(current_pwd)       pwd_elem.send_keys(Keys.ENTER)  

#实际结果       

actual=driver.find_element_by_xpath('//img[@]/..')    

#断言       

self.assertIn('小小鸟', actual.text)

当在进行实际结果获取的时候,占用了大量时间等待首页正确加载,虽然后面测试用例通过。但是造成了大量时间浪费,运行一个测试用例花费 26.5 秒。

09415d2881422843055b9f1e35442e17.png

3

解决问题

对于一些加载比较慢的资源,在进行自动化测试的时候没有必要等到所有的元素加载完成,再进行元素定位。

设置一个超时时间,如果页面加载超过了指定时间,手工终止页面,相当于用手点击浏览器的 X 按钮,让页面停止加载。

# 设置加载超时时间为 5 s

driver.set_page_load_timeout(5)

try:

   return driver.get(url)

except TimeoutException:

   # 调用 js 脚本终止页面加载

   driver.execute_script("window.stop()")

代码有 3 个点:

  1. 设置超时时间为 5 秒。

  2. 执行 driver.get(url) 时,页面加载如果不超过 5 秒,不会报错,超过 5 秒,会抛出超时异常。

  3. 使用 TimeoutException 捕获超时异常。当超时后,执行 js 指定,终止页面加载。

·

接下来,封装页面 get 方法:

class IndexPage():

    url = 'http://lemonban'

    def __init__(self, driver, load_timeout=5):

        self.driver = driver

        self.driver.set_page_load_timeout(load_timeout)

    def get(self):

        try:

            return self.driver.get(self.url)

        except TimeoutException:

            self.driver.execute_script("window.stop()")

修改原来的自动化脚本:

classTestLogin(unittest.TestCase):

    def test_login_success(self):

        # 初始化浏览器

        driver = webdriver.Chrome()

        driver.implicitly_wait(20)

        url = 'http://lemonban_url'

        driver.get(url)

        # 登录

        driver.find_element_by_name('phone').send_keys(current_phone)

        pwd_elem = driver.find_element_by_name('password')

        pwd_elem.send_keys(current_pwd)

        pwd_elem.send_keys(Keys.ENTER)

        # 实际结果

        IndexPage(driver).get()

actual=

driver.find_element_by_xpath('//img[@]/..')

        # 断言

        self.assertIn('小小鸟', actual.text)

4

总结问题

其他的代码都不需要发生变化,只需要耗时的地方添加:

IndexPage(driver).get() 让页面按照设置的超时时间加载就可以了。

7fe462e345dc9c55944f0983edef59d3.png

新的测试时间为 11.3 秒, 测试效率提升将近 60%。不说了,我得赶紧把这个解决方案整合到简历里去。

9486a605208873f022a4f14a324d7bd9.gif

这个世界没有重来二字,所以不如一切趁早

这里是软件技术大师,分享各种学习思维和方法

面试技巧、职场知识以及其他有趣的内容..

16842fa1d9ca75f8c8a0d987007855d8.png

END

9a736abc8da9b1aa2e91f661ace07d83.png

扫码关注我们

更多学习资料和干货等着你们

       今天因为你的分享,让我元气满满!

往期精彩回顾

软件测试者宝藏资源库

测试必备工具之全网最强抓包神器Charles,你还不知道?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值