我正在尝试测试从select标签中选择一个选项(这些选项是从远程@R_502_6274@服务器获取的).在与网站正常交互期间,填充此下拉列表的时间不会超过几分之一秒.但是,当我运行以下测试时,
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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。