在做自動化的時候,有時候會需要判斷元素是否存在,iframe是否存在,以及一些彈出框是否存在,selenium中單獨封裝了一個庫中有關於元素判斷的方法
expected_conditions
expected_conditions在selenium的一個方法庫,簡稱EC,里面主要有一些判斷元素是否出現,彈出框是否出現,以及是否出現新窗口等。
使用方法:
用的比較多的就是和顯示等待一起使用,通過顯示等待的方法來循環判斷是否元素是否出現
# 導入EC from selenium.webdriver.support import expected_conditions as EC # 顯示等待 from selenium.webdriver.support.ui import WebDriverWait WebDriverWait(driver,10,0.5).until(EC.title_is('百度一下'))
具體方法:
expected_conditions的方法種類有很多。大部分都是判斷元素的,但是也有其他的存在
方法 | 說明 |
title_is | 判斷當前頁面的title是否完全等於(==)預期字符串 |
title_contains | 判斷當前頁面的title是否包含預期字符串 |
presence_of_element_located | 判斷某個元素是否被加到了dom樹里,並不代表該元素一定可見 |
visibility_of_element_located | 判斷某個元素是否可見. 可見代表元素非隱藏,並且元素的寬和高都不等於0 |
visibility_of | 跟上面的方法一樣,直接傳定位到的element |
presence_of_all_elements_located | 判斷是否至少有1個元素存在於dom樹中。舉個例子,如果頁面上有n個元素的class都是'column-md-3',那么只要有1個元素存在,返回True |
text_to_be_present_in_element | 判斷某個元素中的text是否,包含預期的字符串 |
text_to_be_present_in_element_value | 判斷某個元素中的value屬性是否,包含預期的字符串 |
frame_to_be_available_and_switch_to_it | 判斷該frame是否可以switch進去 |
invisibility_of_element_located | 判斷某個元素中是否不存在於dom樹或不可見 |
element_to_be_clickable | 判斷某個元素中是否可見並且是否可以點擊 |
staleness_of | 等某個元素從dom樹中移除 |
element_to_be_selected | 判斷某個元素是否被選中了,一般用在下拉列表 |
element_selection_state_to_be | 判斷某個元素的選中狀態是否符合預期 |
element_located_selection_state_to_be | 跟上面的方法作用一樣,只是上面的方法傳入定位到的element |
alert_is_present | 判斷頁面上是否存在alert |
new_window_is_opened | 判斷窗口是否增加,傳入窗口數量 |
number_of_windows_to_be | 期望窗口為多少 |
frame_to_be_available_and_switch_to_it | 判斷是否切換到iframe |
上面安靜簡單的列舉了常用的幾種判斷方法,如何想要了解源碼,我們可以通過打開EC,crtl+點擊進入查看
具體的用法,我們可以參考源碼,或者點個關注,持續更新,后面用到那種會進行說明