我使用3个选择下拉列表从服务器(通过ajax)获取数据。 我想编写一个集成测试,我需要等待ajax请求完成,然后从下一个下拉列表中选择一个值。
到目前为止,我在等待下一次选择之前要等几秒钟,但这不可靠,也不是一个好的解决方案。
I am fetching data from a server(via ajax) using 3 select dropdowns. I want to write an integration test where I need to wait for the ajax request to finish then select a value from the next dropdown.
So far I am waiting for some seconds before doing the next select but that's not reliable and not a good solution.
最满意答案
当您要求与其进行交互时,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秒钟,使选项显示在页面上,然后选择它
I have realized that capybara(latest version) by default waits for the ajax to complete then run the next line in the code. I did not have to do anything, just one selection after the other.
select 'VW', from: 'trademarks-dropdown' select 'Golf', from: 'models-dropdown' assert_equal 200, status_code更多推荐
发布评论