Проблема задержки вебдрайвера - PullRequest
3 голосов
/ 08 марта 2011

Кто-нибудь еще испытывает проблему задержки с Webdriver? У меня это работает на огурце с капибарой. И заполнение формы занимает более 30 секунд или даже минут. По какой-то причине он заполнит одно поле и затем остановится перед заполнением другого поля, когда на оба ссылается идентификатор.

Кроме того, из-за этой задержки я сталкиваюсь с ошибками тайм-аута. (Но они ошибочны ...)

В полях нет ничего особенного. Они появляются при загрузке страницы, и на этой странице нет 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'

Редактировать: Это может быть связано с тем фактом, что у меня уже был открыт экземпляр Firefox, когда я запускал тесты Cucumber. Хотя частота тайм-аутов уменьшилась, я все равно получаю их достаточно часто, и думаю, что это все еще проблема.

Редактировать2: Файл компонента будет указывать шаг: 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 действительно существуют на странице.

Я должен был включить больше информации об ошибке. Часто это будет выглядеть так:

...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"}

Надеюсь, эта дополнительная информация поможет! Если вам нужно что-то еще, пожалуйста, дайте мне знать в комментариях.

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

Проблема, с которой вы столкнулись, была вызвана WebMock, который нарушил поведение Net :: HTTP по умолчанию. Эта проблема теперь исправлена ​​в WebMock 1.7.0

0 голосов
/ 12 марта 2011

Я не знаком с webmock, но, глядя на обратную трассировку, вполне вероятно, что это виновник - поскольку WebDriver использует HTTP для связи с Firefox, и в частности Net :: HTTP по умолчанию.

Чтобы подтвердить это, вы можете указать WebDriver использовать Curb вместо , что, надеюсь, не будет зависеть от того, что делает webmock.

...