我正在使用assert_selector和檢查某個元素的網頁assert_no_selector。
在一種情況下,該元素存在,而在其中一種情況下則不存在。我的測驗作業正常。但是,如果我assert_no_selector在元素位于頁面上時使用,而不是測驗立即失敗,它會等待直到default_max_wait_time我的幫助檔案中指定的內容才會失敗并繼續進行下一個測驗。例如
scenario 'expect element to appear' do
login(email, password)
assert_no_selector('a[id="elementID"]', minimum: 1)
end
我會假設如果運行此代碼并且元素實際上位于頁面上,那么它會立即失敗。即使可能很快找到元素,為什么它會等到達到最大等待時間?有一個更好的方法嗎?每當此測驗失敗時,我想避免讓測驗等待整個最大等待時間。
uj5u.com熱心網友回復:
Capybaras 斷言中等待行為的目的是處理瀏覽器中的異步行為。如果您使用,assert_no_selector您是在告訴水豚,您希望該頁面沒有該元素,因此它會等待該元素消失的最長等待時間,然后再引發例外(因為您告訴它您希望該元素沒有在那里并且頁面可能正在處理會導致該元素被洗掉的內容)。如果您想要立即檢查,則指定等待時間為 0 - 但一旦您在頁面中具有 JS 行為,這通常會導致不穩定的測驗。
assert_no_selector('a#elementID', wait: 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364014.html
