【发布时间】:2011-12-11 11:46:27
【问题描述】:
有没有办法在 Firefox 上停止使用 watir-webdriver 加载页面?或者即使页面仍在加载,是否有办法强制我的脚本中的某些内容?在我的脚本中,网站会挂起,脚本最终会超时。
【问题讨论】:
标签: ruby watir watir-webdriver
有没有办法在 Firefox 上停止使用 watir-webdriver 加载页面?或者即使页面仍在加载,是否有办法强制我的脚本中的某些内容?在我的脚本中,网站会挂起,脚本最终会超时。
【问题讨论】:
标签: ruby watir watir-webdriver
您可以使用 Timeout 类强制它在等待一段合理的时间后放弃(这也是 Watir 在内部执行它的等待方式)
begin
Timeout::timeout(10) do
# perform actions that may hang here
end
rescue Timeout::Error => msg
put "Recovered from Timeout"
end
【讨论】:
如果网站挂起,如果元素没有出现,您应该能够使用等待方法使脚本超时。这些主要用作 AJAX 的答案,但它们也应该适用于这种情况。例如,如果脚本在您单击链接后挂起,并且您希望下一页具有特定的标题或文本:
@browser.link(:name => "Let's Hang!").click
Watir::Wait.until(30) { @browser.title == "new page" }
或
Watir::Wait.until(30) { @browser.text.include? ("confirmation text") }
或
@browser.image(:src => "awesome.jpg").wait_until_present(30)
其中的每一个都将等待 30 秒以等待条件满足,然后退出并出现错误。您可以在应用的挂起窗口内更改退出时间 (30)。
【讨论】:
请查看 Selenium 问题http://code.google.com/p/selenium/issues/detail?id=687 尚未修复,watir-webdriver 也是基于 Selenium,希望它能回答您的问题。
【讨论】: