等待Ajax调用完成Capybara

时间:2016-05-02 12:11:11

标签: ruby-on-rails ruby capybara minitest

我使用3个选择下拉列表从服务器(通过ajax)获取数据。我想编写一个集成测试,我需要等待ajax请求完成,然后从下一个下拉列表中选择一个值。

到目前为止,我正在等待几秒钟才进行下一次选择,但这不可靠而且不是一个好的解决方案。

2 个答案:

答案 0 :(得分:1)

当您要求与其互动时,Capybara会自动等待页面上显示的项目。如果没有等待足够长的时间,您可以增加Capybara.default_max_wait_time或将:wait选项传递给大多数查找程序/操作。

因此,如果您要通过Ajax加载选择框,则可以执行

select('Item that is being loaded') 

和Capybara将等到Capybara.default_max_wait_time秒,以便选择该文本的选项。如果您的应用响应时间不够长,则可以

select('Item that is being loaded', wait: 10)
然后

将等待最多10秒钟,以使选项显示在页面上,然后选择它

答案 1 :(得分:0)

我已经意识到capybara(最新版本)默认等待ajax完成然后运行代码中的下一行。我没有做任何事情,只有一个选择接着一个。

select 'VW', from: 'trademarks-dropdown'
select 'Golf', from: 'models-dropdown'
assert_equal 200, status_code