Rapi具備強大且高效的Auto-Wait技術,在播放測試案例時,Rapi會在執行下一個指令前自動調節包含網頁改變的須等待時間並進行有效率的停等。使用Rapi,播放測試案例就像一個真人在幫你進行網頁操作。
預設的等待時間為 10
秒,但該值是可在Rapi基本設定頁面
或Rapi Runner設定檔
中進行調整。若播放速度過快導致指令失敗時可調整至較高的值,若播放速度過慢可調整至較低的值。
在某些情況,使用者可能想在兩個指令間暫停一段時間以便能進行更彈性的測試。使用pause
指令就能做到這點,它會使播放過程沉睡一段時間後再繼續執行下一個指令。
Rapi提供了5種播放速度可供使用者選擇,而setSpeed
指令允許使用者在播放測試案例期間調整播放速度。5
是最快速並代表在執行下個指令前沒有任何延遲時間。每往下調慢一段速會增加執行下個指令前的延遲時間。
verifyPresence
與assertPresence
指令用於驗證目標元素現在是否於網頁上呈現(註:若目標元素出現在網頁DOM,即便在視覺上不可見,亦被判定為呈現)。例如:檢查下載按鈕現在有沒有呈現在導覽列上。
不像verifyPresence
或assertPresence
,若使用waitForElementPresent
,當目標元素沒有出現在網頁DOM上時,在等待時間內該指令會持續等待目標元素於網頁上呈現。若等待時間上限已到而目標元素仍未出現在網頁DOM上,則驗證結果將被判定為失敗。例如:瀏覽到某網頁後,驗證5秒內訂閱按鈕是否出現。
有時,檢查目標元素是否在一段時間內被移除(註:若目標元素不在網頁DOM,才被判定為移除)反而是我們想做的,此時就可以使用waitForElementNotPresent
並給定一個最大等待時間來達成。例如:點擊離開按鈕後,驗證5秒內廣告是否被移除。
verifyVisibility
與assertVisibility
指令用於驗證目標元素現在是否可見(註:目標元素為全透明
、隱藏
或部分被遮蔽
,則被判定為不可見)。例如:檢查FAQ按鈕現在是否是可見的。
不像verifyVisibility
或assertVisibility
,若使用waitForElementVisible
,當目標元素是不可見時,在等待時間內該指令會持續等待目標元素變為可見。若等待時間上限已到而目標元素仍為不可見,則驗證結果將被判定為失敗。例如:點擊某按鈕後,驗證5秒內某元素的CSS屬性是否從視覺上隱藏變為視覺上可見。
在某些情況中,若目標元素經過一段時間後仍為不可見代表網頁可能有程式錯誤的情況發生;換句話說,目標元素應變為不可見才是正確的。此時就可以使用waitForElementNotVisible
並給定一個最大等待時間來達成。例如:點擊某按鈕後,驗證5秒內某元素的CSS屬性是否從視覺上可見變為視覺上隱藏。
以下有幾張圖表探討哪些情況下verifyPresence
, assertPresence
, waitForElementPresent
, waitForElementNotPresent
, verifyVisibility
, assertVisibility
, waitForElementVisible
,或waitForElementNotVisible
在超時前會持續等待。
case → | Element is present | Element is not present |
---|---|---|
verify/assertPresence | 執行成功 | 執行失敗 |
waitForElementPresent | 執行成功 | 會等待 |
waitForElementNotPresent | 會等待 | 執行成功 |
verify/assertPresence
時,若目標元素此刻沒有出現在網頁DOM,立即判定驗證失敗waitForElementPresent
時,若目標元素沒有出現在網頁DOM上,則在超時前會持續等待目標元素出現waitForElementNotPresent
時,若目標元素出現在網頁DOM上,則在超時前會持續等待目標元素被移除case → | Element is visible | Element is invisible |
---|---|---|
verify/assertVisibility | 執行成功 | 執行失敗 |
waitForElementVisible | 執行成功 | 會等待 |
waitForElementNotVisible | 會等待 | 執行成功 |
verify/assertVisibility
時,若目標元素此刻為不可見,立即判定驗證失敗waitForElementVisible
時,若目標元素為不可見,則在超時前會持續等待目標元素變為可見waitForElementNotVisible
時,若目標元素為可見,則在超時前會持續等待目標元素變為不可見