2011-12-06 4 views
2

Watir을 사용하여 페이지를 탐색하고 응용 프로그램에서 일부 페이지의 스크린 샷을 찍습니다.Watir을 사용하는 Rails 응용 프로그램의 Timeout :: Error

그러나 내 서버에서 페이지를 가져 오는 데 어느 정도 시간이 걸리며 Timeout :: Error가 발생합니다.

이 문제를 해결하기 위해 Watir 브라우저 인스턴스에서 wait를 사용하여 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 '내용'과 사업부를 포함

여기 내 코드입니다. 아직도, 나는 기다리고 있지 않다.

+0

대기 시간 초과 오류가 주 브라우저 창에 나타나며 watir 스크립트에서 오지 않았습니까? 즉, 브라우저가 Watir 코드의 요소가 아닌 너무 오랜 시간이 걸릴 것이라고 생각합니다. 그 중 하나 wimpy 서버 또는 하나의 미친 레일 응용 프로그램, 그 또는 그것이 사용할 수없는 페이지 (외부 사이트에서 일부 타사 항목에 필요한 뭔가를 얻으려고?) –

+0

내가 뭘 하려는지입니다 로컬 컴퓨터에서 실행중인 내 응용 프로그램의 페이지 너무 오래 걸리는 이유를 모르십니까 – rookieRailer

+0

브라우저를 수동으로 실행할 때 어떻게 반응합니까? 모든 것이 하나의 시스템에 있다면 perfmon이나 유사한 도구로 약간의 작업을 수행하여 모든 것이 CPU 리소스 나 메모리 또는 다른 것을 사용하고 있는지 확인할 수 있습니다. –

답변

4

Watir :: Waiter.wait_until의 기본 대기 시간은 60 초입니다 (반 초마다 60 회까지 확인). 당신과 같이 더 높은 값을 지정할 수 있습니다 : 여기

당신은 찾을 수
Watir::Waiter.wait_until(120) { code code code } 

더 구체적인 : Watir과 - webdriver를 들어 http://wiki.openqa.org/display/WTR/How+to+wait+with+Watir

, 당신은 Watir과 :: Wait.methods를 사용할 수 있습니다

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

delayed_job gem을 사용하여 백그라운드에서 실행되도록이 프로세스를 옮겼습니다. 제대로 작동합니다!

관련 문제