Timeout ::使用Watir的Rails应用程序中的错误

时间:2011-12-06 14:55:14

标签: ruby-on-rails watir watir-webdriver

我正在使用Watir浏览页面并在我的应用程序中截取某些页面的截图。

但是,从我的服务器获取页面需要一段时间,我得到Timeout :: Error。

为了解决这个问题,我在Watir浏览器实例中使用了等待,检查是否存在id为'content'的div,并让它等到它存在。但是,它需要一些时间,页面将加载到Watir浏览器中。但在加载后,我在主浏览器窗口中显示 Timeout :: Error

这是我的代码:

@pages = Pages.all
browser = Watir::Browser.new
@pages.each do |page|
  page_url = app_root_url + 'pages/' + page.id.to_s
  browser.goto page_url
  Watir::Waiter::wait_until { browser.div(:id, 'content').exists? }
  file_save_path = pages_screenshot_path.to_s + page.id.to_s + '.png'
  browser.driver.save_screenshot(file_save_path)
end
browser.close

每个页面都包含一个id为'content'的div。不过,我猜它还没等。

2 个答案:

答案 0 :(得分:4)

Watir :: Waiter.wait_until的默认等待时间是60秒(每半秒检查一次,直到60)。您可以指定更高的值,如下所示:

Watir::Waiter.wait_until(120) { code code code }

您可以在此处找到更多细节:http://wiki.openqa.org/display/WTR/How+to+wait+with+Watir

对于watir-webdriver,您可以使用Watir :: Wait.methods:

Watir::Wait.until(120) { code code code }

答案 1 :(得分:-1)

我使用delayed_job gem将此过程移到后台运行,它运行正常!