Rspec,水豚,selenium_chrome_headless。提交远程表单后等待响应

Rspec, Capybara, selenium_chrome_headless. Wait for response after submit remote form

使用中 Rails6、Rspecrspec-rails (3.9.0)、水豚capybara (3.31.0)selenium_chrome_headless

我尝试使用 remote: true 提交 ajax 表单。我怎样才能等待回复?

现在可用 sleep 0.2 但我真的不喜欢这样的方法。

我找到了另一种方法:

  Timeout.timeout(Capybara.default_wait_time) do
    loop do
      active = page.evaluate_script('jQuery.active')
      break if active == 0
    end
  end

但是没用。

我的记录应该在请求后消失:

expect(page).to_not have_content('User name')

有什么建议吗?感谢提前

您应该为请求完成后页面中发生的任何明显变化设置预期。如果这意味着文本 "User name" 在请求完成后从页面上消失,那么您对 ​​

的期望
expect(page).not_to have_content('User name')

expect(page).to have_no_content('User name')

将等到该内容(与 have_text 相同)在页面上不再可见(最多 Capybara.default_wait_time 秒),这意味着请求已完成。如果该文本多次出现在页面上并且仅从一个位置被删除,那么您可以在 have_content 中使用计数选项,或者将您没有内容期望的范围限定为从中删除文本的页面的特定部分.