Selenium(二十):expected_conditions判斷頁面元素

1. 判斷元素(expected_conditons)

做爲一個剛剛轉到python開發的小朋友,在開發前只將前輩們封裝的方法看了一遍,學了一邊selenium基礎。看到封裝的方法有什麼判斷元素是否存在、判斷元素是否可見,而在基礎知識中根本不存在,一臉懵逼。python

直到寫爬蟲案例的時候,忽然發現了selenium下的一個模塊吸引了我,由於我在其餘開發中根本沒有碰到這個模塊,因此我就去了解了一下,而後就有了這篇博客。web

selenium的expected_conditions模塊通常也簡稱EC,收集了一系列的場景判斷方法。dom

expected_condtions提供了16種判斷頁面元素的方法。url

咱們就用百度首頁來進行演示吧(想不到什麼網頁)。spa

前面代碼都同樣,因此我就寫在前面了。code

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

base_url = "http://www.baidu.com"
driver = webdriver.Firefox()
driver.implicitly_wait(5)
# 隱式等待和顯示等待都存在時,超時時間取兩者中較大的
driver.get(base_url)

title_is():判斷當前頁面的title是否徹底等於預期字符串,返回布爾值blog

demo = WebDriverWait(driver,10).until(EC.title_is(u"百度一下,你就知道"))
print("判斷title,返回布爾值:",demo)

結果:utf-8

 

 

title_contains():判斷當前頁面的title是否包含預期字符串,返回布爾值 ci

demo = WebDriverWait(driver,10).until(EC.title_contains(u"百度一下"))
print("判斷title,返回布爾值:",demo)

結果:element

 

 

presence_of_element_located():判斷某個元素是否被加到dom樹下,不表明該元素必定可見 

demo = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
'''判斷某個元素是否被加到了dom樹裏,並不表明該元素必定可見,若是定位到就返回WebElement'''
print(demo)

結果:

 

 

visibility_of_element_located():判斷某個元素是否可見,可見表明元素非隱藏,而且元素的寬和高都不爲0 

demo = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))
'''判斷某個元素是否被添加到了dom裏而且可見,可見表明元素可顯示且寬和高都大於0'''
print(demo)

結果:

 

 

visibility_of():判斷元素是否可見,若是可見就返回這個元素 

demo = WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))
'''判斷元素是否可見,若是可見就返回這個元素'''
print(demo)

結果:

 

 

presence_of_all_elements_located():判斷是否至少一個元素存在於dom樹中,舉個例子,若是頁面上有n個元素的class都是'coumn-md-3',name只要有一個元素存在,這個方法就返回True 

demo = WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.mnav')))
'''判斷是否至少有1個元素存在於dom樹中,若是定位到就返回列表'''
print(demo)

結果:

text_to_be_present_in_element_value():判斷某個元素中的value屬性值是否包含了預期字符串 

demo = WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,'#su'),u'百度一下'))
'''判斷指定元素的屬性值中是否包含了預期的字符串,返回布爾值'''
print(demo)

結果:

 

 

text_to_be_present_in_element():判斷某個元素中的text文本是否包含預期字符串 

demo = WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='u1']/a[8]"),u'設置'))
'''判斷指定的元素中是否包含了預期的字符串,返回布爾值'''
print(demo)

結果:

 

 

frame_to_be_availabe_and_switch_to_it():判斷該frame是否能夠switch進去,若是能夠,則返回True而且switch進去,不然返回False (沒找到例子)

invisibility_of_element_located():判斷某個元素是否不存在於dom樹或不可見

demo = WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#swfEveryCookieWrap')))
'''判斷某個元素在是否存在於dom或不可見,若是可見返回False,不可見返回這個元素'''
#注意#swfEveryCookieWrap在此頁面中是一個隱藏的元素
print(demo)

結果:

 

 

element_to_be_clickable():判斷某個元素是見而且是enable(有效)的,這樣的話才叫clickable 

demo = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[8]"))).click()
'''判斷某個元素中是否可見而且是enable的,表明可點擊'''
print(demo)

結果:

 

 

staleness_of():等某個元素從dom樹下移除,返回True或False(沒找到例子)

element_to_be_selected:判斷某個元素是否被選中,通常用於select下拉表(沒找到例子)

 

element_selection_state_to_be:判斷某個元素的選中狀態是否符合預期(沒找到例子)

element_located_selection_state_to_be:跟上面的方法同樣,只是上面的方法傳入定位到的element,這個方法傳入locator(沒找到例子)

alert_is_present:判斷頁面上是會否存在alert(沒找到例子)

相關文章
相關標籤/搜索