3

我们已经在 chrome 和 firefox 上使用 Selenium 成功地针对 Rails 2 运行了集成测试。但是,我们最近升级到 Rails 3 并且在创建 chrome webdriver 实例时遇到了问题。

当我们尝试创建时,我们得到以下堆栈:

irb(main):002:0> profile = Selenium::WebDriver::Chrome::Profile.new
translate])#<Selenium::WebDriver::Chrome::Profile:0x64f2fd0 @extensions=[], @model=nil>
irb(main):003:0> profile['download.prompt_for_download'] = false
false
irb(main):004:0> driver = Selenium::WebDriver.for(:chrome, :profile  => profile,     :switches => %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate])
ArgumentError: wrong number of arguments (0 for 1)
  from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in `open'
  from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in `ip'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:170:in `interfaces'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:23:in `free?'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:5:in `above'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/service.rb:33:in `default_service'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/bridge.rb:14:in `initialize'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in `new'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in `for'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver.rb:67:in `for'
    from (irb):4

有小费吗?

4

3 回答 3

3

当我在我的 Gemfile 中包含一个包含“backports”gem 作为其依赖项的一部分的 gem 时,我看到了这一点。backports gem 重写了一些 Ruby 1.8 内部,覆盖了部分UDPSocket核心类。尝试摆脱 backports gem 并尝试一下。

于 2012-12-17T23:21:19.500 回答
1

Chrome驱动安装:

从“ http://chromedriver.storage.googleapis.com/index.html?path=2.8/ ”下载 Chromedriver 2.x。解压缩并将其保存在任何驱动器上的文件夹中。通过以下步骤设置路径:

复制路径直到 chromedriver.exe 右键单击​​计算机并选择“属性”选择“高级系统变量”选择“环境变量”单击“用户变量”的“路径”变量的编辑按钮附加 chromedriver 路径保存更改。

运行硒测试:

现在运行你的硒测试。它将在 chrome 浏览器上运行。

示例代码

需要'selenium-webdriver'

$driver = Selenium::WebDriver.for :chrome

$driver.navigate.to " https://www.google.co.in/ "

$driver.manage().window().maximize()

$driver.quit()

注意:您需要为最新版本的 Chrome 浏览器安装最新的 chromedriver

于 2014-02-25T13:16:35.117 回答
0

这是由于对 gem 的干扰以及库重用但它改变了接口backports的事实造成的。socketIO.open

升级backportsv2.6.7 或更高版本应该可以解决此问题。

于 2013-01-15T05:34:30.233 回答