2012-12-12 202 views
3

我们一直在chrome和firefox上使用Selenium成功地针对Rails 2运行集成测试。不过,我们最近升级到了Rails 3,并且遇到了创建chrome webdriver实例的问题。Selenium Webdriver无法创建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 

任何提示吗?

+0

同样的问题也发生的最新版本,最新chromedriver。 –

+0

什么版本的Firefox?什么版本的Chrome?什么版本的Chrome驱动程序? – Arran

+0

显示你的代码plz? –

回答

3

当我将包含“backports”gem作为其依赖项的一部分的gem包含到我的Gemfile中时,我看到了这一点。 backports gem重写了一些Ruby 1.8的内部部分,它们重写了UDPSocket核心类的部分内容。尝试摆脱背胶宝石,并给它一个镜头。

+0

techpeace是正确的。这是问题。谢谢! –

+0

另一种解决方案是报告问题:-) 这在最新版本的'backports'中得到修复。请参阅https://github.com/marcandre/backports/issues/67 –

0

这是由于对backports宝石的干扰以及socket库重用IO.open这一事实造成的,尽管它改变了接口。

升级backportsv2.6.7 or above应该解决这个问题。

1

ChromeDriver安装:

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

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

运行Selenium测试:

现在运行你的Selenium测试。它将在Chrome浏览器上运行。

示例代码

需要 '硒的webdriver'

$驱动程序=硒:: WebDriver.for:铬

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

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

$ driver.quit()

注意:您需要安装Chrome浏览器试图实例Firefox的webdriver的时候

相关问题