ruby-on-rails - Webdriver 延迟问题

标签 ruby-on-rails capybara webdriver

还有其他人遇到 Webdriver 的延迟问题吗?我让它在 Cucumber 和 Capybara 上运行。而且填写一张表格需要30多秒甚至几分钟。出于某种原因,当两个字段都被 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$/ do
  fill_in('first_id', :with => "foo")
  fill_in('second_id', :with => "bar")
  ...more fill_ins...
end

Capybara 有时会找到 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'

然后我们验证我们刚刚填写的内容是用这些额外的步骤定义的:

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

希望这些额外的信息对您有所帮助!如果您还需要什么,请在评论中告诉我。

最佳答案

我对 webmock 不熟悉,但查看回溯,这不太可能是罪魁祸首 - 因为 WebDriver 默认使用 HTTP 与 Firefox 通信,特别是 Net::HTTP。

要确认这一点,您可以 tell WebDriver to use Curb instead ,希望它不会受到 webmock 所做的影响。

关于ruby-on-rails - Webdriver 延迟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226293/

相关文章:

sql - Rails ActiveRecord 多个 WHERE 语句

ruby-on-rails - 使用 Capybara/Selenium 测试 html5 文件上传?

ruby - 使用用于 Ruby 的 Selenium Webdriver 进行 HTML5 拖放

php - Ruby on Rails 与 Wordpress 集成

ruby-on-rails - 如何点击没有文字的链接?

ruby-on-rails - 为什么这条线路会在 DreamHost 上与乘客一起打破 Rails?

ruby-on-rails - Rspec 和 capybara ,visit 和 get 方法的区别,关于 current_path 对象

ruby-on-rails-3.2 - 无法在 Rails 3.2 中设置 Rspec 和 Capybara

java - 使用 Webdriver 2 和 Selenium Java 客户端驱动程序进行 Selenium eclipse 配置

java - 如何在 C# 中使用 WebDriver 获取指定元素的屏幕截图