2015-01-05 2 views
0

문제 : 사용자 ID와 암호를 입력하면 웹 사이트의 페이지로드가 매우 느립니다. 이를 막기 위해 wait_until_present 메서드 외에도 "Sleep"문을 입력하려고했습니다. 일반적으로 약 70 초 후에 웹 페이지가로드되지만 60 초 후에 시간 초과가 발생합니다. "wait_until_present"의 기본값 인 60 초 이외에 90 초의 절전 명령문이 있으면 왜 이런 현상이 발생합니까? RB 파일에서Watir - 시간 초과 : 오류 - 수면 무시 됨

코드 :

하는 사용자 ID 및 암호를 입력

@browser.driver.find_element(id: "ctl00_ContentPlaceHolder1_Wizard1_txtUserName").send_keys "" 
@browser.driver.find_element(name: "ctl00$$Wizard1$StartNavigationTemplateContainerID$btnNext").click 
@browser.driver.find_element(id: "ctl00_ContentPlaceHolder1_Wizard1_txtPassword").send_keys "" 
@browser.driver.find_element(name: "ctl00$$Wizard1$StepNavigationTemplateContainerID$btnNext").click 

때까지 기다립니다 페이지가로드

sleep(90) 
@browser.b(:text => "You are now viewing info for 1st Global House").wait_until_present 

오류 :

C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in rescue in rbuf_fill': Timeout::Error ( imeout::Error) from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in rbuf_fill' from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in readuntil' from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in readline' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2563:in read_status_line' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2552:in read_new' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1320:in block in transport_request' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in catch' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in transport_request' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1294:in request' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1287:in block in request' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:746:in start' from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1285:in request' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/http/default.rb:83:in response_for' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/http/default.rb:39:in request' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/http/common.rb:40:in call' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/bridge.rb:640:in raw_execute' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/bridge.rb:618:in execute' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/remote/bridge.rb:375:in clickElement' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.44.0/lib/selenium/ ebdriver/common/element.rb:54:in click' from createaccount.rb:40:in `'

+0

사이트로드에 60 초 이상 걸립니까? – orde

답변

0

Ruby Bindings 페이지에서 Ruby 표준 라이브러리의 Net :: HTTP 클래스는 드라이버 호출간에 기본 제한 시간이 60 초입니다. this answer을 기준으로이 시간 초과를 늘릴 수 있습니다.

+0

사실 두 가지 해결책을 모두 시도했지만 작동하지 않는 것 같습니다. 시도 : Watir.default_timeout = 120 클라이언트 = 셀레늄 :: WebDriver :: 원격 :: HTTP :: Default.new client.timeout = 180 # 초 - 기본값은 60 어느 쪽도 작동하지 않는 것 같습니다. Test : Unit을 어디에 사용해야합니까? 설정 또는 이전 설정 섹션에서? –

+0

잠을 자야한다고 말한 것을 잊어 버렸습니다. Webdriver는 자동으로 페이지가로드 될 때까지 기다릴 것이고 설정 한 절전 모드는 잠시 기다렸다가 문제를 일으킬 것입니다. – titusfortner