水豚部队行动

时间:2016-08-17 07:45:20

标签: capybara

只是想知道,有没有一种方法可以告诉Capybara一旦加载就点击一个元素而不是等待整个页面加载?我有一个单独的步骤,每次测试增加40秒,因为它正在调用第三方服务。

我想要点击进入下一步的元素是在屏幕上加载的第一个元素之一。

似乎浪费了测试时间让每个场景等待40秒。

我已经在网上搜寻,但找不到解决方案。

2 个答案:

答案 0 :(得分:1)

当Capybara首次与页面交互时,取决于您正在使用的驱动程序以及加载额外页面数据的方式(异步,从setTimeout,内联等触发)。由于您似乎并不真正关心从第三方服务返回的数据,您可能会更好地使用提供可编程代理的puffing-billy之类的东西,这可以与Capybara一起使用,可以用来在需要时伪造来自服务的响应,和/或阻止连接尝试。另一种选择是使用一些驱动程序提供的黑名单(显然取决于您与Capybara一起使用的驱动程序),以防止与第三方服务的连接。

答案 1 :(得分:-1)

据我所知,Capybara应该能够自动等待元素,所以在这个例子中:

page.find("#foo").should have_content("login failed")

它将自动等到#foo元素与login failed文字一起显示。

默认等待时间应通过Capybara.default_wait_time设置进​​行配置。