2013-08-02 2 views
0

테스트 환경에서 다음 셀렌 클라이언트 (1.2.18) 스크립트가 시간 초과되었습니다. 이 스크립트는 로컬에서는 작동하지만 테스트 환경에서는 작동하지 않습니다. 나는 timeout을 재현하는 데 필요한 최소한의 코드 만 포함했다. (그래서 나는 http.post를 직접하고있다.)Selenium Grid Timeout

테스트 환경에서 나는 firefox sessionstore.js를보고 브라우저가 사이트에 접속하는 것을 보았지만 결코 노드에 다시 통신하지 않는 것처럼 보입니다.

EDIT : curl 'www.google.com'은 테스트 환경에서 작동합니다.

require 'selenium/client' 
require 'net/http' 

@browser = Selenium::Client::Driver.new(:host => 'localhost', 
              :port => 4445, 
              :browser => '*firefox', 
              :url => 'http://www.google.com/', 
              :timeout_in_second => 60) 
@browser.start_new_browser_session 
session_id = @browser.session_id 
p "SESSION ID: #{session_id}" 

http = Net::HTTP.new('localhost', 4445) 

begin 
    response = http.post('/selenium-server/driver/',"cmd=open&1=landing/summer/index.html&2=true&sessionId=#{session_id}") 
    p "RESPONSE: #{response}" 
ensure 
    p "CLOSING SESSION..." 
    @browser.close_current_browser_session 
end 

그리드 허브로 시작된 다음

selenium-server-standalone-2.25.0.jar -port 4445 -timeout 180 -singleWindow -role hub -browserTimeout 300 -newSessionMaxWaitTimeInSeconds 300 -newSessionWaitTimeout 300 -firefoxProfileTemplate /var/tmp/selenium-grid-start-stop/releases/20130802031034/firefox_profile -trustAllSSLCertificates 

노드는 다음과 같이 시작 :

selenium-server-standalone-2.25.0.jar -role node -port 6666 -hub http://localhost:4445/grid/register -maxSession 1 -firefoxProfileTemplate /var/tmp/selenium-grid-start-stop/releases/20130802031034/firefox_profile -browser browserName=*firefox,seleniumProtocol=Selenium 

그리고 테스트 스크립트를 실행 ...

$ruby test2.rb 
"SESSION ID: 18609e43667a4aa094fe81ef30551b84" 
"CLOSING SESSION..." 
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/protocol.rb:140:in `rescue in  rbuf_fill': Timeout::Error (Timeout::Error) 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/protocol.rb:134:in  `rbuf_fill' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/protocol.rb:126:in `readline' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:2219:in `read_status_line' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:2208:in `read_new' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:1191:in `transport_request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:1177:in `request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:1170:in `block in request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:627:in `start' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:1168:in `request' 
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:978:in `post' 

누구든지 이런 종류의 타임 아웃을 본 적이 있습니까? 사이트 (Google)가 분명히 올라갔습니다. 아마도 테스트 환경에서 뭔가 잘못 구성 되었습니까?

답변

0

해결책을 찾았습니다. 테스트 환경에서 Firefox를 우연히 10 -> 17로 업그레이드했습니다.

그리드 노드는 Firefox 17에서 작동하지 않는 Firefox prefs.js를 제공하고있었습니다. 브라우저가 시작되어 사이트에 성공적으로 연결할 수있었습니다. , (어떤 이유로 든) 노드에 다시 응답 할 수 없습니다.

해결책은 FF 17에서 작동하는 업데이트 된 prefs.js를 제공하는 것이 었습니다. 우리는 스스로 환경 설정을 제공하지 않고 테스트를 실행하여이 작업을 수행했습니다. 이렇게하면 파이어 폭스가 우리가 복사하고 편집 한 기본 설정 파일을 생성하게된다.