1114Selenium web自動化測試經驗分享-設定網頁超時載入時間set_page_load_timeout()
阿新 • • 發佈:2018-12-26
最開始學習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
歡迎關注 微信公眾號:紫雲小站