在執(zhí)行自動(dòng)化測試用例過程中,發(fā)現(xiàn)因?yàn)榫W(wǎng)絡(luò)慢或其他原因?qū)е耫river.get(url) 時(shí),頁面一直在加載,頁面沒有加載完成就不會(huì)去繼續(xù)執(zhí)行下面的動(dòng)作,但是實(shí)際上需要操作的元素已經(jīng)加載出來了。
解決方法
第一步:使用 set_script_timeout() 設(shè)置等待最大時(shí)間。
第二步:到了最大等待時(shí)間后頁面如果仍然沒有加載完成,執(zhí)行js代碼, driver.execute_script("window.stop()") 停止頁面加載,執(zhí)行下面的自動(dòng)化測試步驟。
代碼如下:
driver = self.driver
# 設(shè)置頁面最大加載時(shí)間
driver.set_page_load_timeout(10)
try:
driver.get(self.base_url)
except TimeoutException:
print '?。。。。。ime out after 10 seconds when loading page?。。。。?!'
# 當(dāng)頁面加載時(shí)間超過設(shè)定時(shí)間,通過js來stop,即可執(zhí)行后續(xù)動(dòng)作
driver.execute_script("window.stop()")
- 設(shè)置了最大等待時(shí)間為10秒。
- 如果10秒沒有加載完成,打印“time out after 10 seconds when loading page!”,然后停止加載,直接執(zhí)行下面的測試步驟。
代碼封裝
# -*- coding: utf-8 -*-
# @Time : 2018/8/6 11:12
# @Author : 銀河以北
# @Email : smilegks@163.com
# @Introduction : XXX
def page_loading_timeout(driver, url, time):
'''
:param driver: 參數(shù)1,傳入瀏覽器對(duì)象
:param url: 參數(shù)2,傳入url
:param time: 參數(shù)3,設(shè)置超時(shí)時(shí)間,單位是秒
:return:
'''
driver.set_page_load_timeout(time)
try:
driver.get(url)
except:
print "!?。。。?!time out after %s seconds when loading page?。。。。?!" % time
# 當(dāng)頁面加載時(shí)間超過設(shè)定時(shí)間,通過js來stop,即可執(zhí)行后續(xù)動(dòng)作
driver.execute_script("window.stop()")