我正在尝试测试一个页面,当它最初出现时,UI可用一瞬间,然后发生一些异步调用,屏幕被阻止一秒钟。在异步调用之后,下拉列表中的某些选项会被填充并刷新UI。我认为Capybara正在字段中输入一些文本,即在异步调用之前UI可用。之后,字段被清除或更改(我的一些Capybara输入似乎丢失了)。我试图避免手动等待,因为我听说Capybara应该能够自然地处理某种事情。有没有办法做到这一点?
答案 0 :(得分:2)
要让Capybara等待你需要告诉它等待什么 - 所以如果你想等到异步调用完成,你需要确定异步调用响应对页面的变化。如果只是在下拉列表中填充一些选项,那么您可以执行类似
的操作如果使用RSpec
expect(page).to have_select('select_id_name_or_label_text', with_options: ['option populated by call', 'another option populated by call'])
如果不使用RSpec
page.assert_selector(:select, 'select_id_name_or_label_text', with_options: ['option populated by call', 'another option populated by call'])