Timeout :: Ошибка в приложении Rails с использованием Watir - PullRequest
3 голосов
/ 06 декабря 2011

Я использую Watir для просмотра страниц и создания снимков экрана некоторых страниц в моем приложении.

Однако получение страницы с моего сервера занимает некоторое время, и я получаю Timeout :: Error.

Чтобы исправить это, я использовал ожидание в своем экземпляре браузера Watir, чтобы проверить, существует ли div с идентификатором 'content', и заставить его ждать, пока он не появится.Однако это занимает некоторое время, и страница загружается в браузер 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

Каждая страница содержит div сid 'content'.Тем не менее, это не ждет, я думаю.

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

Время ожидания по умолчанию для 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 }
0 голосов
/ 14 декабря 2011

Я переместил этот процесс для запуска в фоновом режиме, используя гем delayed_job, и он работает отлично!

...