亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1,遇見問題

在進行 web 自動化測試的時候,經常會碰到一些加載非常慢的頁面。這些頁面加載之所以慢有很多種原因:

  • 頁面本來就有非常多資源需要加載,通常是首頁;
  • 頁面使用了一些不是很穩定的外部依賴,比如調用了不成熟的 css 樣式庫和 js 庫;
  • 公司服務器處理能力有限;
  • 開發人員的代碼寫得不好,等等。

 

Python自動化 頁面加載速度太慢,如何提升測試效率?

 

 

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[@class="mr-5"]/..')
        # 斷言
        self.assertIn('小小鳥', actual.text)

當在進行實際結果獲取的時候,占用了大量時間等待首頁正確加載,雖然后面測試用例通過。但是造成了大量時間浪費,運行一個測試用例花費 26.5 秒。

 

Python自動化 頁面加載速度太慢,如何提升測試效率?

 

 

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()")

修改原來的自動化腳本:

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)

        # 實際結果
        IndexPage(driver).get()
        actual = driver.find_element_by_xpath('//img[@class="mr-5"]/..')
        # 斷言
        self.assertIn('小小鳥', actual.text)

 

4, 總結問題

其他的代碼都不需要發生變化,只需要在加載耗時的地方添加 IndexPage(driver).get() 讓頁面按照設置的超時時間加載就可以了。

 

Python自動化 頁面加載速度太慢,如何提升測試效率?

 

新的測試時間為 11.3 秒, 測試效率提升將近 60%。不說了,我得趕緊把這個解決方案整合到簡歷里去。

分享到:
標簽:自動化 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定