Ruby on rails Rspec、水豚、硒、铬、无头。提交远程表单后等待响应

Ruby on rails Rspec、水豚、硒、铬、无头。提交远程表单后等待响应,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,使用中 Rails 6,RspecRspec Rails(3.9.0),CapybaraCapybara(3.31.0),selenium\u chrome\u headless 我尝试使用remote:true提交ajax表单。我怎样才能等待答复 现在工作sleep0.2,但我真的不喜欢这种方法 我找到了另一种方法: Timeout.timeout(Capybara.default_wait_time) do loop do active = page.evaluate

使用中 Rails 6,Rspec
Rspec Rails(3.9.0)
,Capybara
Capybara(3.31.0)
selenium\u chrome\u headless

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

现在工作
sleep0.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')

有什么建议吗?感谢您的帮助

当请求完成时,您应该为页面中的任何可见更改设置期望值。如果这意味着当请求完成时,文本“用户名”从页面中消失,那么您期望

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


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

@OlegSobchuk可以这样做。假设您已正确安装了Capybaras Rspec matchers(您正在使用的应用程序或gems中的某个地方出现了“capybara/Rspec”要求),则
。拥有\u no \u content
和.not \u to have \u content`在功能上应该是等效的。
expect(page).to have_no_content('User name')