2016-01-06 96 views
0

我是水豚和Ruby on Rails世界的新手。我正在为使用水豚的Rails应用程序编写黄瓜功能。等待表格提交到水豚

我在步骤定义文件中使用睡眠语句来等待页面(或者形式)被提交。 但我发现页面提交时间各不相同。那么,我怎么能告诉水豚等到下一页被加载或发生某种行动?

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

我已经尝试了上述方式等待,但它没有奏效。我发现wait_until已被废弃在水豚2.0 所以任何人都可以告诉我如何等待水豚,直到页面提交或直到发生某些行动?

回答

0

在这个例子中,确切的:真正的选项不涉及:文本选项传递,而传递给“选择”定位器提供由水豚(:按钮,:领域等)。既然你没有使用这些选择器,那么这个选项并没有真正做任何事情。有水豚等待加载下一页,你需要把它看的东西,将是下一个页面上可见,但没有在当前页面上

expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page') 

会造成水豚等上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_max_wait_time的值,也可以覆盖用于特定的值通过使用以下方式呼叫:等待选项

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