Ruby on rails 4 等待表单以capybara格式提交

Ruby on rails 4 等待表单以capybara格式提交,ruby-on-rails-4,rspec,cucumber,capybara,Ruby On Rails 4,Rspec,Cucumber,Capybara,我对capybara和RubyonRails的世界还不熟悉。我正在使用capybara为Rails应用程序编写Cumber特性 我在步骤定义文件中使用sleep语句来等待页面(或者更确切地说是表单)提交。 但我注意到页面提交时间各不相同。那么,我怎样才能告诉水豚等到下一个页面被加载或者发生一些动作呢 expect(page).to have_css(".alert.in.alert-success" , text: arg1,exact: true) 我尝试过上述方法等待,但没有成功。我发现w

我对capybara和RubyonRails的世界还不熟悉。我正在使用capybara为Rails应用程序编写Cumber特性

我在步骤定义文件中使用sleep语句来等待页面(或者更确切地说是表单)提交。 但我注意到页面提交时间各不相同。那么,我怎样才能告诉水豚等到下一个页面被加载或者发生一些动作呢

expect(page).to have_css(".alert.in.alert-success" , text: arg1,exact: true)
我尝试过上述方法等待,但没有成功。我发现wait_until在capybara2.0中被弃用
那么,有人能告诉我,我该如何在水豚岛等待页面提交或等待某些动作发生

水豚通常非常擅长等待元素出现。但是您遇到了一些问题,您可以尝试增加默认等待时间,也可以手动等待。这里有一篇文章可能会有所帮助

expect(page).to have_css(".alert.in.alert-success" , text: arg1,exact: true)

水豚通常非常擅长等待元素出现。但是您遇到了一些问题,您可以尝试增加默认等待时间,也可以手动等待。这里有一篇文章可能会有所帮助


在您提供的示例expect中,确切的:true选项与传递的:text选项无关,而是与传递给Capybara提供的“选择器”(按钮、:字段等)的定位器有关。由于您没有使用这些选择器中的任何一个,因此该选项实际上没有任何作用。要让水豚等待下一页加载,您需要让它查找下一页上可见但当前页上不可见的内容

expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page')
将导致Capybara最多等待Capybara.default_max_wait_time,以获取页面上包含给定文本的给定类的可见元素。如果要匹配元素中的精确文本,可以传递正则表达式

expect(page).to have_css('.alert.in.alert-success', text: /\AThis is only on the next page\Z/)
如果页面加载速度不够快,可以增加Capybara.default\u max\u wait\u time的值,也可以使用:wait选项覆盖用于特定调用的值

expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page', wait: 10)  # wait up to 10 seconds for the element with given classes containing given text to become visible

在您提供的示例中,exact:true选项与传递的:text选项无关,而是与传递给Capybara提供的“选择器”的定位器相关(:button、:field等)。由于您没有使用这些选择器中的任何一个,因此该选项实际上没有任何作用。要让水豚等待下一页加载,您需要让它查找下一页上可见但当前页上不可见的内容

expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page')
将导致Capybara最多等待Capybara.default_max_wait_time,以获取页面上包含给定文本的给定类的可见元素。如果要匹配元素中的精确文本,可以传递正则表达式

expect(page).to have_css('.alert.in.alert-success', text: /\AThis is only on the next page\Z/)
如果页面加载速度不够快,可以增加Capybara.default\u max\u wait\u time的值,也可以使用:wait选项覆盖用于特定调用的值

expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page', wait: 10)  # wait up to 10 seconds for the element with given classes containing given text to become visible