在使用webdriver的get方法打開頁面時,可能頁面須要加載的元素較多致使加載時間很長,而時間過長會致使後面的操做沒法進行,甚至直接報錯;因此在頁面加載到必定時間,實際須要定位的元素很大可能上已經加載出來時,須要中止頁面的加載,進而進行下面的操做。web
下面是源碼:瀏覽器
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'})
能夠看到set_page_load_timeout()設置網頁超時加載時間須要傳入一個time_to_wait。網絡
在Web自動化腳本執行時,瀏覽器打開網址會一直等待整個頁面加載完成,但有時候頁面想要的元素早就加載完成了,可是由於個別js之類的東西特別慢,只能乾等着。url
下面是我公司開發一個項目時使用set_page_load_timeout()方法的具體例子。spa
# 請求URL @stop_loading def get_url(self,url,timeout=100): self.c_print('[%s] getting url...'%self.c_time()) self.driver.set_page_load_timeout(timeout) self.driver.get(url)
你們雖然不能徹底看懂,可是大概能夠看出來這是一個經過get方法打開指定url的方法。code
有的時候網絡可能會很卡,這就致使頁面加載會很慢,甚至會直接報錯。可是咱們的項目是確定要避免這種狀況的,怎麼避免呢?那就要使用set_page_load_timeout()啦。在使用get方法前使用此方法,就可使得網絡不穩定、網速慢的問題不會直接致使任務失敗。另外這個方法還能夠組合其餘方法,造成刷新、中止加載等操做。blog