Timeout ::使用Watir的Rails应用程序出错

我正在使用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。 不过,我猜它还没等。

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 } 

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