我使用3个选择下拉列表从服务器(通过ajax)获取数据。我想编写一个集成测试,我需要等待ajax请求完成,然后从下一个下拉列表中选择一个值。
到目前为止,我正在等待几秒钟才进行下一次选择,但这不可靠而且不是一个好的解决方案。
答案 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