參考文章鏈接:http://www.jb51.net/article/92684.htm
感謝分享
1.強制等待:通過Python中time包提供的sleep()方法設置固定的等待時間
2.隱式等待:其實就相當於設置全局的等待,在定位元素時,對所有元素設置超時時間。如果頁面元素已經出現,但頁面未加載完,其仍會繼續等待,直到頁面加載完成。隱式地等待一個無素被發現或一個命令完成,這個方法每次會話只需要調用一次,最大設置30秒
語法:driver.implicitly_wait(30)
3.顯式等待:通過WebDriverWait類和該類的until()方法配合,實現靈活的等待。它的執行過程是,首先設置一個超時時間,程序每隔一段時間查看一次頁面,知道until()方法中的條件成立,則執行下一步,否則繼續等待,直到超過設置的超時時間,然后拋出異常TimeoutException。
這個類的路勁 from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait類實例化時需要傳入的參數:driver:WebDriver實例
timeout:等待的最長時間
【poll_frequency】 :調用until或until_not中的方法的間隔時間,默認是
0.5
秒
【ignored_exceptions】:忽略的異常,如果在調用until或until_not的過程中拋出這個元組中的異常,
則不中斷代碼,繼續等待,如果拋出的是這個元組外的異常,則中斷代碼,拋出異常。默認只有 NoSuchElementException。
until()方法需要傳入的參數:
method: 在等待期間,每隔一段時間調用這個傳入的方法,直到返回值不是
False
message: 如果超時,拋出TimeoutException,將message傳入異常
#encoding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
#from selenium.webdriver.support.wait import WebDriverWait
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.maximize_window()
#設置顯式等待時間
wait = WebDriverWait(browser,10)
#定位到“設置”菜單,此處用到了顯示等待“設置”元素
setting_menu = wait.until(lambda ele : ele.find_element_by_link_text("設置"))