如何使用水豚和 ruby 重新加载页面直到出现按钮
how to reload page until a button appears using capybara and ruby
我想在一个动作之后单击一个按钮,但直到我重新加载页面时按钮才会出现。有时需要一些时间才能显示按钮,我不得不重新加载页面不止一次。我不想设置静态延迟。那么有没有一种方法可以使用水豚和 ruby:
来实现以下目标
do
page.evaluate_script("window.location.reload()")
until a button appears
reoload until page.has_selector?
returns true, check this:
while true
page.evaluate_script 'window.location.reload()'
if page.has_selector?("css_selector")
break
end
end
虽然 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 服务器上的规格为 运行 时,它会很有用。
请注意,它仍然会导致某些驱动程序出现意外行为,因为它可能会在某些脚本正在评估时中断。
我想在一个动作之后单击一个按钮,但直到我重新加载页面时按钮才会出现。有时需要一些时间才能显示按钮,我不得不重新加载页面不止一次。我不想设置静态延迟。那么有没有一种方法可以使用水豚和 ruby:
来实现以下目标 do
page.evaluate_script("window.location.reload()")
until a button appears
reoload until page.has_selector?
returns true, check this:
while true
page.evaluate_script 'window.location.reload()'
if page.has_selector?("css_selector")
break
end
end
虽然 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 服务器上的规格为 运行 时,它会很有用。
请注意,它仍然会导致某些驱动程序出现意外行为,因为它可能会在某些脚本正在评估时中断。