如何使用capybara和ruby重新加载页面,直到出现按钮

时间:2016-08-10 08:59:54

标签: ruby capybara

我希望在操作后单击按钮,按钮不会出现,除非我重新加载页面。有时候显示按钮需要一些时间,我不得不重新加载页面一次。我不想放置静态延迟。那么有没有办法实现以下使用capybara和ruby:

  do
    page.evaluate_script("window.location.reload()")
  until a button appears

2 个答案:

答案 0 :(得分:3)

虽然Mesut的代码应该可以正常工作,但我会将其重写为:

Timeout.timeout(Capybara.default_max_wait_time) do
  loop do
    page.evaluate_script("window.location.reload()")
    break if page.has_selector?(...)
  end
end

如果必须等待超过Capybara设置中定义的超时,这将确保失败。例如,在CI服务器上运行规范时,它会很有用。

请注意,它仍然会导致某些驱动程序出现意外行为,因为在某些脚本正在评估时它可能会中断。

答案 1 :(得分:0)

重新加载直到page.has_selector?返回true,请检查:

while true 
  page.evaluate_script 'window.location.reload()'
  if page.has_selector?("css_selector")
    break
  end
end