只是想知道,有没有一种方法可以告诉Capybara一旦加载就点击一个元素而不是等待整个页面加载?我有一个单独的步骤,每次测试增加40秒,因为它正在调用第三方服务。
我想要点击进入下一步的元素是在屏幕上加载的第一个元素之一。
似乎浪费了测试时间让每个场景等待40秒。
我已经在网上搜寻,但找不到解决方案。
答案 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
设置进行配置。