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

问题描述 投票:0回答:1

使用中Rails 6,Rspec rspec-rails (3.9.0),Capybara 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')

有任何建议吗?感谢您的进步

ruby-on-rails rspec capybara
1个回答
0
投票

完成请求后,您应该为页面上的任何可见变化设置期望值。如果这意味着请求完成后,“用户名”文本将从页面中消失,那么您对[]的期望

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.