UI自動化之三種等待


UI自動化中常用三種等待

 

目錄

1、強制等待

2、隱式等待

3、顯示等待

 

1、強制等待

執行到某一條語句后,然后sleep(3),等待3秒后,才會繼續執行后面的語句

 

2、隱式等待

隱式等待只需要聲明一次,一般在打開瀏覽器后進行聲明。聲明之后對整個drvier的生命周期都有效,后面不用重復聲明。 

隱式等待是等待頁面加載完,才會繼續執行后面的語句;也就是一般情況下你看到瀏覽器標簽欄那個小圈不再轉,才會執行下一步

driver = webdriver.Chrome()
driver.implicitly_wait(10)

  

 

3、顯示等待

不同於隱式等待,顯示等待是等待需要加載的元素加載完,就會繼續執行后面的語句

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait                            
from selenium.webdriver.support import expected_conditions as EC 
          
driver = webdriver.Firefox()
driver.get("http://XX.com")
try:
    element =WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "Element")))
finally:
    driver.quit()

顯示等待需要用到兩個類:WebDriverWait和expected_conditions兩個類

3.1WebDriverWait

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

driver:瀏覽器驅動

timeout:最長超時時間,默認以秒為單位

poll_frequency:檢測的間隔步長,默認為0.5s

ignored_exceptions:超時后的拋出的異常信息,默認拋出NoSuchElementExeception異常

WebDriverWait()類中有untiluntil_not()和until_not()until_not()方法:

until

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

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

until_not

 與until相反,until是當某元素出現或什么條件成立則繼續執行,

 until_not是當某元素消失或什么條件不成立則繼續執行,參數也相同。

3.2expected_conditions

此類中各種方法,達到某種條件,返回True和False

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

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

 presence_of_element_located : 判斷某個元素是否被加到了dom樹里,並不代表該元素一定可見

 visibility_of_element_located : 判斷某個元素是否可見. 可見代表元素非隱藏,並且元素的寬和高都不等於0

 visibility_of : 跟上面的方法做一樣的事情,只是上面的方法要傳入locator,這個方法直接傳定位到的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進去,如果可以的話,返回True並且switch進去,否則返回False

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

 element_to_be_clickable : 判斷某個元素中是否可見並且是enable的,這樣的話才叫clickable

 staleness_of : 等某個元素從dom樹中移除,注意,這個方法也是返回True或False

 element_to_be_selected : 判斷某個元素是否被選中了,一般用在下拉列表

 element_selection_state_to_be : 判斷某個元素的選中狀態是否符合預期

 element_located_selection_state_to_be : 跟上面的方法作用一樣,只是上面的方法傳入定位到的element,而這個方法傳入locator

alert_is_present : 判斷頁面上是否存在alert


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM