我希望在操作后单击按钮,按钮不会出现,除非我重新加载页面。有时候显示按钮需要一些时间,我不得不重新加载页面一次。我不想放置静态延迟。那么有没有办法实现以下使用capybara和ruby:
do
page.evaluate_script("window.location.reload()")
until a button appears
答案 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