首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待表单在水豚语中提交

等待表单在水豚语中提交
EN

Stack Overflow用户
提问于 2016-01-06 20:33:10
回答 2查看 1.6K关注 0票数 1

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

我在步骤定义文件中使用睡眠语句来等待页面(或者更确切地说是表单)被提交。但我观察到,页面提交时间各不相同。那么,我如何告诉水豚等待下一个页面加载或发生某些操作呢?

代码语言:javascript
复制
expect(page).to have_css(".alert.in.alert-success" , text: arg1,exact: true)

我已经尝试了上面的方法等待,但它不起作用。我发现wait_until在capybara2.0中被弃用了,所以谁能告诉我如何在水豚中等待,直到页面被提交,或者直到一些操作发生?

EN

回答 2

Stack Overflow用户

发布于 2016-01-06 21:00:23

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

https://robots.thoughtbot.com/automatically-wait-for-ajax-with-capybara

票数 0
EN

Stack Overflow用户

发布于 2016-01-07 06:38:45

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

代码语言:javascript
复制
expect(page).to have_css('.alert.in.alert-success', text: 'This is only on the next page')

将导致Capybara等待一个可见元素出现在页面上,其中给定的类包含给定的文本,直到Capybara.default_max_wait_time。如果希望与元素中的文本精确匹配,可以传递一个正则表达式

代码语言:javascript
复制
expect(page).to have_css('.alert.in.alert-success', text: /\AThis is only on the next page\Z/)

如果页面加载速度不够快,您可以增加Capybara.default_max_wait_time的值,也可以使用:wait选项覆盖用于特定调用的值

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34633269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档