11

今日、これらのエラーが大量に発生し始めました。

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'

Ubuntu サーバーの Firefox 21 でヘッドレス (ヘッドレス gem 経由) Watir-WebDriver cuke を実行しています。有効な gem のバンドルは次のとおりです。

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)

この問題の解決をどこから始めればよいかさえわかりません。タイムアウトはランダムです。これらのテストを OS X 上の Firefox 21 (ヘッドレスではない) で実行しても発生しません。誰もこれを経験したことがありますか?どんなアイデアでも大歓迎です - ありがとう!

4

2 に答える 2

1

この問題に遭遇しました。なぜそれが起こるのかわかりませんが、解決策を見つけました。watir ブラウザーとヘッドレスを終了してから、再試行します。問題は、watir がブラウザーへの接続を失ったため、ブラウザーを終了できないことです。初期不良の部分だと思います。watir ブラウザーを終了するには、ブラウザー オブジェクトを YAML でダンプし、結果を解析して、エミュレートされたブラウザーの pid を見つけます。終了後、kill コマンドが正しい pid に送信されます。最後に、ブラウザとヘッドレスが再初期化されます。

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
于 2016-07-29T08:48:13.137 に答える
0

私はこれを他の人のマシンで見たことがあり、診断に少し時間を費やしました。

その特定の状況では、問題は Ruby バージョン マネージャーの混乱にあるように見えました。つまり、Ruby の古いバージョン用にコンパイルされたいくつかの gem がピックアップされていたことを意味します。

彼らの宝石セットを吹き飛ばし、宝石を再インストールしたところ、すべてが再び確実に機能し始めました.

これはここでの問題ではないかもしれませんが、他の人にとっては注目に値します。Ruby のバージョン管理は最近では簡単になってきていますが、いまだに物事を混乱させるのは簡単すぎます。

于 2014-08-13T13:33:41.930 に答える