WebDriverWait等設置等待時間和超時時間

1.顯示等待

等待頁面加載完成,找到某個條件發生後再繼續執行後續代碼,若是超過設置時間檢測不到則拋出異常python

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)web

——driver:WebDriver 的驅動程序(Ie, Firefox, Chrome 或遠程)數組

——timeout:最長超時時間,默認以秒爲單位app

——poll_frequency:休眠時間的間隔(步長)時間,默認爲 0.5 秒異步

——ignored_exceptions:超時後的異常信息,默認狀況下拋 NoSuchElementException 異常async

——如1:element = WebDriverWait(driver, 10).until(lambda x : x.find_element_by_id("id"))測試

           element.send_keys("selenium")網站

——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(「Id」))ui

            is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(「someId」).is_displayed())spa

WebDriverWai()通常由 unit()或 until_not()方法配合使用:

——until(method, message=’’)      調用該方法提供的驅動程序做爲一個參數,直到返回值不爲 False。——until_not(method, message=’’)      調用該方法提供的驅動程序做爲一個參數,直到返回值爲 False。


from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver=webdriver.Firefox()
driver.get()
WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id("someId"))
#經過檢查某個元素是否被加載來檢查是否登陸成功,我認爲當個黑盒子用就能夠了。其中10的解釋:10秒內每隔0.5毫秒掃描1次頁面變化,直到指定的元素

2.隱示等待:implicitly_wait

# 至關於設置全局的等待,在定位元素時,對全部元素設置超時時間,超出了設置時間則拋出異常
# 隱式等待使得WebDriver在查找一個Element或者Element數組時,每隔一段特定的時間就會輪詢一次DOM,若是Element或數組沒有立刻被發現的話。
# 默認設置是0。
# 一旦設置,這個隱式等待會在WebDriver對象實例的整個生命週期起做用。
driver = webdriver.Firefox()
driver.implicitly_wait(10)


3.強制等待
import time
time.sleep(10)

 4.設置超時:

pageLoadTimeout方法用來設置頁面徹底加載的超時時間,徹底加載即頁面所有渲染,異步同步腳本都執行完成。前面的文章都是使用get 方法登陸安居客網站,你們應該能感受到每次打開網頁後要等很長一段時間纔會進行下一步的操做,那是由於沒有設置超時時間而get方法默認是等待頁面所有加 載完成纔會進入下一步驟,加入將超時時間設置爲3S就會中斷操做拋出異常

當頁面加載後就會執行下面的操做了

setScriptTimeout設置異步腳本的超時時間,用法同pageLoadTimeout同樣就再也不寫了,異步腳本也就是有async屬性的JS腳本,能夠在頁面解析的同時執行。

from selenium import webdriver  
d= webdriver.PhantomJS()  
d.set_page_load_timeout(10)  
d.set_script_timeout(10)#這兩種設置都進行纔有效,未測試

參考:

selenium設置元素髮現超時等待時間-python

selenium webdriver—超時設置

selenium 超時設置/等待時間過長自動中止(python)

相關文章
相關標籤/搜索