UI自动化常见的等待方式
UI自動化常見的等待方式
在UI自動化中常常會出現腳本不穩定的情況,元素有時候能夠定位,有時候卻定位不到的情況。以上的情況就可以通過等待的方式去解決,下面我們就來介紹下常見的等待方式。
1.強制等待:(sleep)
強制等待:不管瀏覽器元素是否加載完成,程序都得等待3秒,3秒一到,繼續執行下面的代碼。代碼如下:
from?selenium?import?webdriver?? ? ?# 導入selenium中的webdriver from?time?import?sleep?? ? ? ??# 導入time模塊中的sleepdriver?=?webdriver.Chrome() driver.get("https://www.baidu.com") ? ??# 打開百度首頁網站 sleep(2) ? ? ??# 等待兩秒 driver.find_element_by_id("kw").send_keys("它石軟件測試") ? ??# 在百度首頁輸入框中輸入它石軟件測試 driver.find_element_by_id("su").click() ? ??# 點擊百度一下按鈕 sleep(2) driver.quit() ??# 關閉瀏覽器2.隱式等待:(implicitly_wait)
implicitly_wait(x):設置等待時間為x秒,等待元素加載完成,如果到了時間元素沒有加載出,就拋出一個NoSuchElementException的錯誤。代碼如下:
from?selenium?import?webdriver?? ? ?# 導入selenium中的webdriver from?time?import?sleep?? ? ? ??# 導入time模塊中的sleepdriver?=?webdriver.Chrome() driver.implicitly_wait(30) ?# 隱性等待,最長等30秒 driver.get("https://www.baidu.com") ? ??# 打開百度首頁網站 driver.find_element_by_id("kw").send_keys("它石軟件測試") ? ??# 在百度首頁輸入框中輸入它石軟件測試 driver.find_element_by_id("su").click() ? ??# 點擊百度一下按鈕 driver.quit() ??# 關閉瀏覽器注意:隱性等待對整個driver的周期都起作用,所以只要設置一次即可。
3.顯示等待:(WebDriverWait)
顯示等待:設置一個等待時間和一個條件,在規定時間內,每隔一段固定時間查看下條件是否成立,如果成立那么程序就繼續執行,否則就提示一個超時異常。
通常情況下WebDriverWait類會結合ExpectedCondition類一起使用。代碼如下:
WebDriverWait的具體參數和方法:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None) driver:?瀏覽器驅動 timeout:?超時時間,等待的最長時間 poll_frequency:?每次檢測的間隔時間,默認是0.5秒 ignored_exceptions:超時后的異常信息,默認情況下拋出NoSuchElementException異常until(method,message='') method:?在等待期間,每隔一段時間調用這個傳入的方法,直到返回值不是False message:?如果超時,拋出TimeoutException,將message傳入異常ExpectedCondition中常用的判斷條件有以下幾種:
# 判斷指定元素是否加載出來 presence_of_element_located # 判斷某個元素是否可見 visibility_of_element_located #判斷frame是否可切入,可傳入locator元組或者直接傳入定位方式:id、name、index或WebElement frame_to_be_available_and_switch_to_it # 判斷元素是否被選中 element_located_to_be_selected # 判斷元素是否可點擊 element_to_be_clickable:實際代碼如下:
from?selenium?import?webdriver from?selenium.webdriver.support.wait?import?WebDriverWait from?selenium.webdriver.support?import?expected_conditions?as?EC from?selenium.webdriver.common.by?import?By?# 引入By定位方式driver?=?webdriver.Chrome() driver.get('https://www.baidu.com')?# 打開百度首頁 # 設置判斷條件:等待id='kw'的元素加載完成,設置瀏覽器:driver,等待時間:20s,每隔0.5秒去檢查一次元素是否加載完成 input_element?=?WebDriverWait(driver,?timeout=20,poll_frequency=0.5).until(EC.presence_of_element_located((By.ID,?'kw'))) input_element.send_keys('輸入的數據') ??# 在輸入框輸入需要輸入的數據 driver.quit()最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走
這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。希望對大家有所幫助…….在下方我的公眾號里免費獲取~
總結
以上是生活随笔為你收集整理的UI自动化常见的等待方式的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Git在同一台电脑上连接多个仓库
- 下一篇: Pyside2新手1400行代码QQ音乐
