Net:: ReadTimeout on headless Firefox Watir-WebDriver cukes

j'ai commencé à courir en tonnes de ces erreurs aujourd'hui:

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'

j'exécute headless (via headless gem) Watir-WebDriver cukes sur Firefox 21, serveur Ubuntu. Voici le paquet actif de gemmes:

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)

je ne sais même pas par où commencer à résoudre ce problème. Les délais sont aléatoires. Ils ne se produisent pas lorsque je lance ces tests sur Firefox 21 sur OS X (pas sans tête). Quelqu'un at-il vécu cela avant? TOUT et TOUTES les idées beaucoup apprécié -- je vous remercie!

11
demandé sur jonsie_araki 2013-06-04 01:30:39

2 réponses

j'ai rencontré ce problème. Je ne sais pas pourquoi, mais j'ai trouvé une solution. J'arrête juste le navigateur watir et sans tête, puis je réessaie. Le problème est que watir délié la connexion au navigateur de sorte qu'il ne peut pas être résilié. Je pense que cela fait partie du problème initial. Pour terminer le navigateur watir je décharge l'objet du navigateur avec YAML puis analyse le résultat pour trouver le pid du navigateur émulé. Une fois que c'est fait, l'ordre de tuer est envoyé au bon pid. Enfin, le navigateur et sans tête sont réinitialisés.

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 ;}' "#{@tmpDumpFile}" | xargs -rt kill 2>&1`
    FileUtils.rm_f(@tmpDumpFile)
  end

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

  # Reinitialize @watir / @headless then retry
end
1
répondu Dr. Jekyll 2016-11-14 19:22:59

j'ai vu ça sur la machine de quelqu'un d'autre, et j'ai passé un peu de temps à le diagnostiquer.

dans cette situation particulière, le problème semblait être une certaine confusion avec les gestionnaires de versions de Ruby, ce qui signifie que certains gemmes compilées pour une version plus ancienne de Ruby étaient ramassées.

nous avons fait sauter leurs gemmes, réinstallé les gemmes, et tout a recommencé à fonctionner de manière fiable.

peut-être pas votre problème ici, mais il est intéressant de noter pour les autres. Rubis gestion de version est devenir plus facile de nos jours, mais il est encore beaucoup trop facile de mettre les choses dans la confusion.

0
répondu mattwynne 2014-08-13 13:33:41