加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Capybara没有等待ajax请求完成

发布时间:2020-12-16 02:56:33 所属栏目:百科 来源:网络整理
导读:我正在尝试测试从select标签中选择一个选项(这些选项是从远程数据库服务器获取的).在与网站正常交互期间,填充此下拉列表的时间不会超过几分之一秒.但是,当我运行以下测试时, When /^(?:|I )select "([^"]*)" from "([^"]*)" in search form$/ do |value,fiel
我正在尝试测试从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

我收到以下错误,

预期的css“#criteria_div_code>选项:nth-??child(10)”返回一些东西(RSpec :: Expectations :: ExpectationNotMetError)

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

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

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

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

我在这里错过了什么吗?

解决方法

您可能想要检查我对ajax重新同步 Using Capybara for AJAX integration tests的设置超时的响应.重新同步超时默认为10秒,如果您的响应在此之前没有返回,则您将不会得到任何响应,尤其是在配置中已将set:resynchronize设置为false时.下面是设置超时的片段

Capybara.register_driver :selenium do |app|
   Capybara::Selenium::Driver.new(app,:browser => :firefox,:resynchronization_timeout => 1000)
 end

注意:如果您之前设置:resynchronize为false,则需要将其设置为true.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读