1. 程式人生 > >1114Selenium web自動化測試經驗分享-設定網頁超時載入時間set_page_load_timeout()

1114Selenium web自動化測試經驗分享-設定網頁超時載入時間set_page_load_timeout()

最開始學習web自動化測試就遇到一個小困擾,有時候設計的用例可能會開啟新浪、騰訊這些網站,等待網頁載入完成都要小半分鐘。最近重拾web自動化測試,又遇到這個困擾。

今天分享下:通過set_page_load_time()方法來設定時間,然後捕獲timeout異常 並通過執行JS命令來停止頁面載入 window.stop()

一)set_page_load_timeout()

下面是原始碼。

可以看到 set_page_load_timeout() 設定網頁超時載入時間 需要傳入一個time_to_wait

    def set_page_load_timeout(self, time_to_wait):
        """
        Set the amount of time to wait for a page load to complete
           before throwing an error.

        :Args:
         - time_to_wait: The amount of time to wait

        :Usage:
            driver.set_page_load_timeout(30)
        """
        try:
            self.execute(Command.SET_TIMEOUTS, {
                'pageLoad': int(float(time_to_wait) * 1000)})
        except WebDriverException:
            self.execute(Command.SET_TIMEOUTS, {
                'ms': float(time_to_wait) * 1000,
                'type': 'page load'})

在Web自動化指令碼執行時,瀏覽器開啟網址會一直等待整個頁面載入完成,但有時候頁面想要的元素早就載入完成了,但是因為個別js之類的東西特別慢,只能乾等著。

因為沒有設定超時時間而且get方法預設是等待頁面全部載入完成才會執行下一步

二)實戰

    def test_59c(self):
        """set_page_load_timeout"""
        driver = webdriver.Chrome()
        driver.set_page_load_timeout(8)     # 可以自行設定載入時間
        print('0', time.ctime())
        try:
            driver.get("https://www.sina.com.cn/")      # 普通情況下,設定的 超時載入時間遠遠小於實際網頁載入完成需要的時間,所以肯定會報錯
        except:
            driver.execute_script('window.stop()')      # 執行Javascript來停止頁面載入 window.stop()
            print('2', time.ctime())
        print('3', time.ctime())
        time.sleep(1)
        driver.quit()

瀏覽器關閉前,等待一秒的時候,可以看到網頁已經停止載入,瀏覽器標籤欄那個小圈不再轉。

在這裡插入圖片描述

    def wangzhi(self, net):
        from selenium.common.exceptions import TimeoutException
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.set_page_load_timeout(10)        # 設定時間
        try:
            self.driver.get(net)
        except TimeoutException:        # 捕獲timeout異常
            self.driver.execute_script('window.stop()')     # 執行Javascript來停止頁面載入 window.stop()

可以把這一部分程式碼封裝成方法,直接呼叫就可以。但是實際用處不是很大。只是一個小麻煩而已。

交流技術 歡迎+QQ 153132336 zy
歡迎關注 微信公眾號:紫雲小站