我正在使用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。不过,我猜它还没等。
答案 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将此过程移到后台运行,它运行正常!