軟件測試 | 隱式等待、顯示等待和強制等待
等待機制簡介
系統(tǒng)在實際工作中引入等待機制可以保證代碼運行的穩(wěn)定性,保證代碼運行不受網(wǎng)速、計算機性能等條件的約束。
等待就是當(dāng)系統(tǒng)運行時,如果頁面的渲染速度跟不上程序的運行速度,就需要人為地去限制程序執(zhí)行的速度。
測試人員在做Web自動化測試時,一般要等待頁面元素加載完成后,才能執(zhí)行測試操作,否則會報找不到元素等錯誤,這樣就要求在有些測試場景下加上等待機制。
最常見的等待機制有3種:隱式等待、顯示等待和強制等待。
1、隱式等待
我們在測試用例中設(shè)置一個隱式等待時間,測試用例執(zhí)行時會按時間輪詢查找(默認(rèn)0.5秒)元素是否出現(xiàn),如果在輪詢查找的時間內(nèi)元素沒出現(xiàn)系統(tǒng)就拋出異常。
隱式等待的作用域是全局的,隱式等待可以在setup方法中設(shè)置,是作用在整個Session的聲明周期。也就是說只要設(shè)置一次隱式等待,后面就不需要再設(shè)置。如果再次設(shè)置隱式等待,那么后一次的設(shè)置會覆蓋前一次的設(shè)置。
Python版本實現(xiàn)代碼
Java版本實現(xiàn)代碼
2、顯示等待
顯示等待是在代碼中定義等待條件,觸發(fā)該條件后再執(zhí)行后續(xù)代碼,這是根據(jù)判斷條件進行等待。通俗地講就是,程序每隔一段時間進行一次條件判斷,如果條件成立,則執(zhí)行下一步;否則繼續(xù)等待,直到超過設(shè)置的最長時間。核心用法代碼如下。
Python版本
這里通過導(dǎo)入expected_conditions這個庫來滿足顯示等待所需的使用場景,但是expected_conditions庫并不能滿足所有場景,這個時候就需要定制化開發(fā)一個庫來滿足特定場景,Java版的實現(xiàn)如下。
Java版本
3、強制等待
強制等待是使程序中的線程休眠一定時間。強制等待一般在隱式等待和顯式等待都不起作用時使用。
Python版本
Java版本