Selenium Webdriver 无法创建 chrome Webdriver 实例



我们已经在Chrome和Firefox上使用Selenium成功地对Rails 2进行了集成测试。 但是,我们最近升级到 Rails 3,并且在创建 chrome 网络驱动程序实例时遇到了问题。

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

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

有什么提示吗?

当我包含一个 gem 时,我看到了这一点,该 gem 将"向后移植"gem 作为其依赖项的一部分添加到我的 Gemfile 中。向后移植 gem 重写了一些 Ruby 1.8 内部结构,这些内部结构覆盖了 UDPSocket 核心类的部分内容。尝试摆脱向后移植的宝石并试一试。

ChromeDriver 安装:

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

复制路径直到浏览器驱动程序.exe右键单击计算机并选择"属性"选择"高级系统变量"选择"环境变量"单击"用户变量"的"路径"变量的"编辑"按钮 附加部件版式驱动程序路径 保存更改。

运行硒测试 :

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

示例代码

需要"硒网络驱动程序"

$driver = Selenium::WebDriver.for :chrome

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

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

$driver.quit()

注意:您需要为最新版本的Chrome浏览器安装最新的Chrome驱动程序

这是

由于对backports gem 的干扰以及socket库重用IO.open尽管它改变了接口的事实。

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