2016-11-18 26 views
0

我試圖測試一個頁面,當它最初出現時,用戶界面可用於一瞬間,然後發生一些異步調用,屏幕被阻止一秒鐘。在異步調用後,下拉列表中的某些選項會被填充並刷新UI。我認爲水豚在字段中輸入一些文本,在異步調用之前,UI可用。之後,領域被清除或改變(我的一些水豚投入似乎失蹤)。我試圖避免手動等待,因爲我聽說水豚應該能夠自然地處理這種事情。有什麼辦法可以做到嗎?如何處理與水豚的小型等待?

回答

2

要讓Capybara等待,您需要告訴它等待什麼 - 所以如果您想等到異步調用完成,您需要確定異步調用響應對頁面所做的更改。如果它是所有填充在下拉一些選項,那麼你可以在不使用RSpec的

page.assert_selector(:select, 'select_id_name_or_label_text', with_options: ['option populated by call', 'another option populated by call']) 
如果使用RSpec的

expect(page).to have_select('select_id_name_or_label_text', with_options: ['option populated by call', 'another option populated by call']) 

這樣做