1. 程式人生 > >設置元素等待

設置元素等待

png 選中 宋體 等我 想要 support con 完成 嚴重

強制等待

強制等待,不管你瀏覽器是否加載完了,程序都得等待3秒,3秒一到,繼續執行下面的代碼,作為調試很有用,有時候也可以在代碼裏這樣等待,不過不建議總用這種等待方式,太死板,嚴重影響程序執行速度。

目前一直用time.sleep(1) 直接等待幾分鐘這種

隱性等待

第二種辦法叫隱性等待,implicitly_wait(xx),隱性等待的意義是:某男和某女約會,無論某女去哪兒,都要等某男xx秒,如果某男在這段時間內來了,則倆人約會開始,如果某男在規定時間內沒到,則某女自然就等著給某男拋異常(生氣中)

技術分享圖片

隱形等待是設置了一個最長等待時間,如果在規定時間內網頁加載完成,則執行下一步,否則一直等到時間截止,然後執行下一步。註意這裏有一個弊端,那就是程序會一直等待整個頁面加載完成,也就是一般情況下你看到瀏覽器標簽欄那個小圈不再轉,才會執行下一步,但有時候頁面想要的元素早就在加載完成了,但是因為個別

js之類的東西特別慢,我仍得等到頁面全部完成才能執行下一步,我想等我要的元素出來之後就下一步怎麽辦?有辦法,這就要看selenium提供的另 一種等待方式——顯性等待wait了。

顯示等待

顯示等待,等待某個元素成立時繼續執行,否則在達到最大時長時拋出超時異常

webdirver 提供的等待方法。在設置時間內,默認每隔一段時間檢測一次當前頁面元素是否存在,如果超過設置時間檢測不到則拋出異常。

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

driver - 傳入

WebDriver實例

timeout - 最長超時時間,默認以秒為單位
poll_frequency - 調用until或until_not中的方法的間隔時間,默認是0.5秒
ignored_exceptions - 超時後的異常信息,默認情況下拋 NoSuchElementException 異常。

until()
WebDriverWait()一般由 until()和until_not()方法配合使用

until(method, message=’ ’)

method: 在等待期間,每隔一段時間調用這個傳入的方法,直到返回值為 Ture。

message: 如果超時,拋出TimeoutException,將message傳入異常


調用該方法提供的驅動程序作為一個參數,直到返回值為 Ture。

until_not(method, message=’ ’)

與unitl()相反

method: 在等待期間,每隔一段時間調用這個傳入的方法,直到返回值False

message: 如果超時,拋出TimeoutException,將message傳入異常


expected Conditions

expected_conditions是selenium的一個模塊,其中包含一系列可用於判斷的條件

from selenium.webdriver.support import expected_conditions as EC


使用 expected_conditions 類時對其時行了重命名,通過 as 關鍵字對其重命名為 EC,
然後可以調用expected_conditions類下面的方法

title_is 用於判斷標題是否 xx。
title_contains 用於判斷標題是否包含 xx 信息。

presence_of_element_located 元素是否存在。

presence_of_all_elements_located 判斷一組元素的是否存在

visibility_of_element_located 元素是否可見。

invisibility_of_element_located 判斷元素是否隱藏
visibility_of 是否可見

expected_conditions 類提供一些預期條件的實現。



text_to_be_present_in_element 判斷元素是否有 xx 文本信息
text_to_be_present_in_element_value 判斷元素值是否有 xx 文本信息
frame_to_be_available_and_switch_to_it 表單是否可用,並切換到該表單。
invisibility_of_element_located 判斷元素是否隱藏
element_to_be_clickable 判斷元素是否點擊,它處於可見和啟動狀態
staleness_of 等到一個元素不再是依附於 DOM。
element_to_be_selected 被選中的元素。
element_located_to_be_selected 一個期望的元素位於被選中。
element_selection_state_to_be 一個期望檢查如果給定的元素被選中。
element_located_selection_state_to_be 期望找到一個元素並檢查是否選擇狀態
alert_is_present 預期一個警告信息

設置元素等待