Web自動化測試:set_page_load_timeout

在使用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

相關文章
相關標籤/搜索