Selenium提供了WebDriverWait類用於針對指定元素設定等待,其中內含until(self,method,str="")和until_not(self,method,str="")兩個方法判斷,其中的引數method(判斷條件)通常與expected_conditions模組連用,其內部封裝了判斷方法,本文介紹expected_conditions模組下的方法。
一、expection_conditions下的方法
1、title_is
判斷title是否出現,返回值為bool型別
2、title_contains
判斷title是否包含某些字元,返回值為bool型別
3、presence_of_element_located
判斷某個元素是否被加到了dom樹裡,並不代表該元素一定可見
4、visibility_of_element_loacted
判斷某個元素是否被新增到了dom樹裡並且可見,寬和高都大於0
5、visibility_of
判斷元素是否可見,如果可見就返回這個元素
6、presence_of_all_elements_located
判斷是否至少有1個元素存在於dom樹中
7、visibility_of_any_elements_located
判斷是否至少有一個元素在頁面中可見
8、text_to_be_present_in_element
判斷指定的元素中是否包含了預期的字串
9、text_to_be_present_in_element_value
判斷指定元素的屬性值中是否包含了預期的字串
10、frame_to_be_available_and_switch_to_it
判斷該frame是否可以switch進去
11、invisibility_of_element_located
判斷某個元素是否存在於dom樹或不可見
12、element_to_be_clickable
判斷某個元素中是否可見並且是enable的,代表可點選
13、stateness_of
等待某個元素從dom樹中移除
14、element_to_be_selected
判斷某個元素是否被選中了,一般用在下拉選單
15、element_selection_state_to_be
判斷某個元素的選中狀態是否符合預期
16、element_located_selection_state_to_be
判斷某個元素的選中狀態是否符合預期
17、alert_is_present
判斷頁面上是否存在alert
二、方法示例
以text_to_be_present_in_element((By.ID, "xx")為等待條件示例。
以載入百度頁面為例,設定等待時間,利用WebDriverWait類中方法until(method,message)判斷是否達到等待條件,規定時間達到等待條件則判斷為載入成功,超出時間則丟擲異常,其中引數method為上述Excepdion_conditions模組中的方法。
self.driver=webdriver.Edge()
self.driver.get("https://www.baidu.com")
wait=WebDriverWait(self.driver,2)
#在載入頁面的程式碼後設定等待,最長等待時間為2s,每隔0.5s檢查一次,若規定時間內未等到元素載入出來,則丟擲異常
wait.until(EC.text_to_be_present_in_element((By.LINK_TEXT,"新聞"),'新聞'))#等待,直到指定的元素中包含‘新聞’字樣
xinwen = self.driver.find_element(By.LINK_TEXT, '新聞')
xinwen.click()
print("ok")