3

Webdriver で遅延の問題が発生している人はいますか? カピバラを使ってCucumberで実行しています。また、フォームに入力するのに 30 秒または数分以上かかります。何らかの理由で、1 つのフィールドに入力してから、別のフィールドに入力する前に一時停止します。両方が id によって参照されている場合です。

また、この待ち時間が原因でタイムアウト エラーが発生しています。(しかし、それらは不安定です...)

畑は特に何もありません。それらはページの読み込み時に表示され、このページには Ajax はありません。

誰にもアイデアはありますか?

エラーは次のとおりです。

execution expired (Timeout::Error)
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:126:in `readline'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:2026:in `read_status_line'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:2015:in `read_new'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1051:in `request_without_webmock'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1037:in `request_without_webmock'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:543:in `start'
     /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1035:in `request_without_webmock'

編集:これは、Cucumber テストを実行したときに Firefox インスタンスが既に開いていたという事実に関連している可能性があります。タイムアウトの頻度は減りましたが、まだ十分な頻度でタイムアウトが発生するので、まだ問題があると思います。

Edit2:機能ファイルはステップを指定します: And I complete personal info

ステップは、他のステップとしてさらに定義されます。

And /^I complete personal info$/ do
  fill_in('first_id', :with => "foo")
  fill_in('second_id', :with => "bar")
  ...more fill_ins...
end

カピバラはfirst_id時々見つけて、私のシナリオの残りの部分は正常に実行されます. それ以外の場合は、タイムアウトします。私の意見では、それは非常に予測不可能です。また、見つかっfirst_idても見つからない場合もありますsecond_id。ちなみに、これらidの s は実際にページに存在します。

エラーに関する詳細情報を含める必要がありました。多くの場合、次のようになります。

...all that stuff I included in the error above...
./features/step_definitions/web_steps.rb:107
./features/step_definitions/web_steps.rb:11:in `with_scope'
./features/step_definitions/web_steps.rb:105:in `/^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/'
/my feature file:30:in 'Then we verify stuff we just filled out'

Then we verify stuff we just filled outは、次の追加手順で定義されます。

And %{I should see "foo"}
And %{I should see "bar"}

この追加情報がお役に立てば幸いです。他に何か必要な場合は、コメントでお知らせください。

4

2 に答える 2

0

私は Webmock に詳しくありませんが、バックトレースを見ると、それが原因である可能性は低いとは言えません。WebDriver は HTTP を使用して Firefox と通信し、具体的にはデフォルトで Net::HTTP を使用するためです。

これを確認するには、代わりに Curb を使用するように WebDriver に指示できます。これは、webmock の動作の影響を受けないことを願っています。

于 2011-03-12T00:55:04.803 に答える