Capybara没有等待ajax请求完成

use*_*773 5 ajax cucumber capybara ruby-on-rails-3

我正在尝试测试从select标签中选择一个选项(这些选项是从远程数据库服务器获取的).在与网站正常交互期间,填充此下拉列表的时间不会超过几分之一秒.但是,当我运行以下测试时,



    When /^(?:|I )select "([^"]*)" from "([^"]*)" in search form$/ do |value, field|
      within "#select_container" do
        save_and_open_page
        page.should have_css("#criteria_div_code > option:nth-child(10)")
        select(value, :from => field)
      end 
    end


我收到以下错误,

expected css "#criteria_div_code > option:nth-child(10)" to return something (RSpec::Expectations::ExpectationNotMetError)

下拉列表中至少包含20个选项,因此我只测试第10个选项的存在(暂时).

save_and_open_page 显示只存在一个选项(默认选项)而不是至少10个,因此出现"ExpectionNotMetError".

Capybara.default_wait_time = 30 - 填充列表的充足时间.

是不是capybara等待ajax电话完成?

我在这里错过了什么吗?

nkm*_*nkm 1

我猜你需要使用 js 驱动程序进行 ajax 测试,

\n\n
describe 'some stuff which requires js', :js => true do\n  it 'will use the default js driver'\n  it 'will switch to one specific driver', :driver => :celerity\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

另请注意以下行 - 在您\xe2\x80\x99 与页面交互后,水豚可以阻止并等待 Ajax 请求完成。要启用此行为,请将 :resynchronize 驱动程序选项设置为 true。

\n