2013-06-03 5 views
11

Ich begann in Tonnen laufen dieser Fehler heute:Net :: Readtimeout auf kopflos Firefox Watir-WebDriver cukes

Net::ReadTimeout (Net::ReadTimeout) 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1405:in `block in transport_request' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `catch' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `transport_request' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1375:in `request' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1368:in `block in request' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:851:in `start' 
     /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1366:in `request' 

ich kopflos laufen (über kopflos gem) Watir-WebDriver cukes auf Firefox 21 , Ubuntu-Server. Hier ist das aktive Bündel von Edelsteinen:

Gems included by the bundle: 
    * builder (3.2.2) 
    * bundler (1.3.5) 
    * childprocess (0.3.9) 
    * cucumber (1.3.2) 
    * cwtestgen (0.1.6) 
    * data_magic (0.14) 
    * diff-lcs (1.2.4) 
    * faker (1.1.2) 
    * ffi (1.8.1) 
    * gherkin (2.12.0) 
    * headless (1.0.1) 
    * i18n (0.6.4) 
    * multi_json (1.7.5) 
    * page-object (0.8.10) 
    * page_navigation (0.9) 
    * require_all (1.2.1) 
    * rspec (2.13.0) 
    * rspec-core (2.13.1) 
    * rspec-expectations (2.13.0) 
    * rspec-mocks (2.13.1) 
    * rubyzip (0.9.9) 
    * selenium-webdriver (2.33.0) 
    * syntax (1.0.0) 
    * thor (0.18.1) 
    * watir-webdriver (0.6.4) 
    * watir-webdriver-performance (0.2.2) 
    * websocket (1.0.7) 
    * yml_reader (0.2) 

Ich weiß nicht einmal, wo die Lösung dieses Problems zu beginnen. Die Timeouts sind zufällig. Sie treten nicht auf, wenn ich diese Tests unter Firefox 21 unter OS X (nicht kopflos) durchführe. Hat das schon mal jemand erlebt? ALLE und alle Ideen viel geschätzt - danke!

+3

Ich habe nie die Ursache dieses Problems herausgefunden, aber irgendwann ging es weg. Ich habe diesen Fehler seit ein paar Tagen nicht mehr gesehen. Das nächste Mal, wenn ich es sehe, werde ich mit unserem Systemadministrator zusammenarbeiten, um zu versuchen, es herauszufinden, und wenn wir die Wurzel des Problems finden, werde ich diesen Thread aktualisieren. –

+0

Hey, hast du schon einen Grund dafür gefunden? Ich stoße auf dasselbe Problem. – user1120134

+0

Ive hatte dieses Problem vorher. Für mein Problem war es ein Timeout-Problem. Ich hatte Verbindungsprobleme mit meinem ISP. Nach dem Update von meinem ISP gingen sie weg. Ich nehme an, dass es auf der Linie lag. – Duck1337

Antwort

0

Ich habe das auf der Maschine eines anderen gesehen und habe ein wenig Zeit damit verbracht, es zu diagnostizieren.

In dieser besonderen Situation schien das Problem mit den Ruby-Versionsverwaltern zu sein, was bedeutet, dass einige Edelsteine, die für eine ältere Version von Ruby kompiliert wurden, aufgenommen wurden.

Wir haben ihre Edelsteine ​​weggeworfen, die Edelsteine ​​wieder eingebaut, und alles hat wieder zuverlässig funktioniert.

Dies ist vielleicht nicht Ihr Problem hier, aber es ist es wert für andere zu beachten. Ruby Versionsverwaltung ist getting easier nowadays, aber es ist immer noch viel zu einfach, Dinge in ein Durcheinander zu bringen.

1

Ich lief auf dieses Problem. Ich weiß nicht, warum es passiert, aber ich habe eine Lösung gefunden. Ich beende den Browser einfach und kopflos, dann versuche ich es erneut. Das Problem ist, dass watir die Verbindung zum Browser getrennt hat, so dass es nicht beendet werden kann. Ich denke, es ist ein Teil des anfänglichen Problems. Um den WATIr-Browser zu beenden, lasse ich das Browser-Objekt mit YAML ab und analysiere dann das Ergebnis, um die PID des emulierten Browsers zu finden. Nachdem es fertig ist, wird der Befehl kill an die richtige PID gesendet. Schließlich werden der Browser und der Headless neu initialisiert.

tryLeft = 3 
begin 
    @watir.goto url 
rescue => error 
    tryLeft -= 1 

    if tryLeft >= 0 
    sleep 1 
    retry 
    end 

    begin 
    Timeout::timeout(2) { @watir.close } 
    rescue 
    File.open(@tmpDumpFile, 'w') { |file| file << YAML::dump(@watir) } 
    `awk '/pid:/ {print $2;}' "#{@tmpDumpFile}" | xargs -rt kill 2>&1` 
    FileUtils.rm_f(@tmpDumpFile) 
    end 

    @headless.stop 
    `killall Xvfb 2>&1` 

    # Reinitialize @watir/@headless then retry 
end