1. 程式人生 > >Selenium基本使用(三)元素判斷

Selenium基本使用(三)元素判斷

strong 兩種方法 import con itl span 一個 selenium through

一、由於有些頁面加載完後,某些元素還沒有加載,這樣就會導致異常,腳本穩定性變差

為了解決這個問題,selenium提供了WebDriverWait以及兩種方法進行判讀:

顯示判斷和隱式判斷

顯示expected_conditions類,提供預期條件判斷:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ex

WebDriverWait(driver,5,0.5).until(ex.presence_of_element_located((By.ID,"
kw"))) ‘‘‘ WebDriverWait(driver,timeout,poll_frequency)在單位時間內,檢測元素是否存在。返回bool型 :parameter driver 驅動 timeout等待時間 poll_frequency檢測時間間隔 ------------------------------------------------------------------- 一般WebDriverWait配合until和until_not使用 在單位時間內,until直到返回True,until_not相返 WebDriverWait(driver,timeout,poll_frequency).unitl(ex.presence_of_element_located((By.ID,"kw"))) 需要使用到的包: from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ex from selenium.webdriver.common.by import By ------------------------------------- presence_of_element_located是判斷元素是否存在 ex下還有很多的方法供使用,例如,判斷復選是否是勾選等 ***************************************************************** 使用時需要註意事項:ex.presence_of_element_located((By.ID,"kw")) 這個方法,要有兩個括號,因為參數只能是一個元組
‘‘‘

ex.element_located_selection_state_to_be((By.ID,"kw")) #元素的選中狀態是否符合預期
ex.element_selection_state_to_be(element) #與上一個用法相同,區別在於一個參數是定位,一個是定位後的元素
ex.alert_is_present() #判斷頁面上,是否存在Alert彈出框
ex.element_located_to_be_selected((By.ID,"kw")) #某個預期元素是否被選中
ex.element_to_be_selected(element) #與上一個用法相同,區別在於一個參數是定位,一個是定位後的元素
ex.element_to_be_clickable() #判斷元素是否可見並且可以點擊 ex.frame_to_be_available_and_switch_to_it() #判斷該表單是否,可以切換進去,可以返回True,並且Switch進去,否則返回False ex.invisibility_of_element_located() #判斷某元素是否存在於Dom樹或不可見 ex.new_window_is_opened() #是否有窗口被打開 ex.presence_of_all_elements_located() ex.presence_of_element_located() #判讀元素是否存在 ex.text_to_be_present_in_element() #判讀元素中的Text是否包含了預期字符串 ex.text_to_be_present_in_element_value#判斷元素的Value是否包含了預期字符串 ex.title_contains(title) #判讀當前頁面,標題是否包含預期字符串 ex.title_is(title) #判讀當前頁面,標題是否為預期 ex.visibility_of_all_elements_located() ex.visibility_of_element_located((By.ID,"kw")) #判斷某元素是否可見 ex.visibility_of(element) #與上個用法相同,區別在於參數是定位後的元素,上一個是傳的定位 ex.visibility_of_any_elements_located((By.CLASS_NAME,"a#")) #判斷是否至少有一個元素在頁面中可見,如果定位到就返回列表

is_displayed()元素定位下有這個方法,也可以判斷元素是否可見

Selenium基本使用(三)元素判斷