一、強制等待:
time.sleep(3)---->強制等待3秒
二、隱式等待:
driver.implicitly_wait(20)
含義:設置的這個20秒表示最大等待時長,它等待到什么情況結束呢?--->它就相當於我們在瀏覽器中,加載一個頁面,看到頁面不在轉圈圈,全部加載完成之后,才算等待結束。
全部加載完成在瀏覽器其實包含以下內容:
1.頁面的html從服務器返回。
2.頁面的所有靜態資源,js,css,img,廣告,全部從服務器獲取,在加載到頁面中。
隱式等待的弊端:
一般我們在寫程序的時候,這里使用等待,最主要的目的就是等待我們想要的數據能夠出來就可以了。用隱式等待他是等到所有資源都加載的完成的,我們花了一部分時間,去等待我們不想要的資源,所以隱式等待並不常用。
三、顯式等待:會設置一個條件,當頁面滿足該條件時,等待完成!
調用模塊
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdrver.common.by import By
創建一個等待對象
wait=WebDriverWait(driver"""等待作用的那個driver""",20"""最大等待時長,超過時長會報timeout異常""") wait.until( EC.presence_of_element_located( By.XPATH"""定位器的選擇器名稱。By.ID,By.CSS_SELECTOR""",'//div[@class="recreit-list"]' """定位器""",locator))
presence_of_element_located:等待條件。