2013-06-03 12 views
11

ho iniziato a correre in tonnellate di questi errori oggi:Net :: ReadTimeout su senza testa cukes Firefox Watir-WebDriver

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' 

Io corro senza testa (via gemma senza testa) cukes Watir-WebDriver su Firefox 21 , Server Ubuntu. Ecco il pacchetto attivo di gemme:

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) 

Non so nemmeno da dove iniziare a risolvere questo problema. I timeout sono casuali. Non si verificano quando eseguo questi test su Firefox 21 su OS X (non headless). Qualcuno ha provato questo prima? TUTTE e TUTTE le idee molto apprezzate - grazie!

+3

Non ho mai capito la causa di questo problema, ma alla fine è andato via. Non ho visto questo errore tra qualche giorno. La prossima volta che lo vedrò lavorerò con il nostro sysadmin per cercare di scoprirlo e, se troviamo la radice del problema, aggiornerò questa discussione. –

+0

Ehi, hai già trovato una ragione per questo? Sto incontrando lo stesso problema. – user1120134

+0

Ive ha avuto questo problema prima. Per il mio problema era un problema di timeout. Stavo avendo problemi di connessione con il mio ISP. Dopo la correzione dal mio ISP sono andati via. Immagino che ci fosse statico sulla linea. – Duck1337

risposta

0

Ho visto questo sulla macchina di qualcun altro, e ho passato un po 'di tempo a diagnosticarlo.

In questa particolare situazione, il problema sembrava essere un po 'confuso con i gestori di versione di Ruby, il che significava che alcune gemme compilate per una versione precedente di Ruby venivano raccolte.

Abbiamo spazzato via i loro set di gemme, reinstallato le gemme e tutto ha funzionato di nuovo in modo affidabile.

Questo potrebbe non essere il tuo problema qui, ma vale la pena notare per gli altri. La gestione della versione di Ruby è getting easier nowadays, ma è ancora troppo facile per mettere le cose in una confusione.

1

Mi sono imbattuto in questo problema. Non so perché succede ma ho trovato una soluzione. Ho appena terminato il browser watir e senza headless, quindi riprovo. Il problema è che watir ha sciolto la connessione al browser in modo che non possa essere terminato. Penso che sia una parte del problema iniziale. Per terminare il browser watir, eseguo il dump dell'oggetto browser con YAML, quindi analizzo il risultato per trovare il pid del browser emulato. Dopo averlo fatto, il comando kill viene inviato al pid destro. Finalmente il browser e senza testa vengono reinizializzati.

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 
Problemi correlati