Ruby Selenium Webdriver无法创建chrome Webdriver实例
我们已经在chrome和firefox上使用Selenium成功地对Rails 2进行了集成测试。然而,我们最近升级到了Rails 3,在创建chrome webdriver实例时遇到了问题 当我们尝试创建时,会得到以下堆栈:Ruby Selenium Webdriver无法创建chrome Webdriver实例,ruby,selenium,Ruby,Selenium,我们已经在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 @e
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
irb(main):002:0>profile=Selenium::WebDriver::Chrome::profile.new
翻译])#
irb(主):003:0>profile['download.prompt_for_download']=false
假的
irb(main):004:0>driver=Selenium::WebDriver.for(:chrome,:profile=>profile,:switches=>%w[--忽略证书错误--禁用弹出窗口阻止--禁用转换])
ArgumentError:参数数目错误(0表示1)
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in“open”
摘自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in“ip”
摘自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:170:in“interfaces”
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:23:in‘free?’
摘自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:5:在“上述”中
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/service.rb:33:“默认服务”中
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/bridge.rb:14:in“initialize”
摘自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in“new”
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in“for”
来自/var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver.rb:67:in“for”
来自(irb):4
有什么提示吗?当我在gem文件中包含一个包含“Backport”gem作为其依赖项的一部分时,我看到了这一点。backports gem重写了一些Ruby 1.8内部构件,这些构件重写了
UDPSocket
core类的部分内容。尝试摆脱backports gem并试一试。这是由于对backports
gem的干扰以及套接字
库重用IO的事实造成的。尽管会更改接口,但请打开
将后台端口升级到应该可以解决此问题。ChromeDriver安装:
从“下载Chromedriver 2.x”,将其解压缩并保存在任何驱动器上的文件夹中。通过以下步骤设置路径:
将路径复制到chromedriver.exe
右键单击计算机并选择“属性”
选择“高级系统变量”
选择“环境变量”
单击“用户变量”的“路径”变量的编辑按钮
附加chromedriver路径
保存更改
运行硒测试:
现在运行selenium测试。它将在chrome浏览器上运行
示例代码
需要“selenium webdriver”
$driver=Selenium::WebDriver.for:chrome
$driver.navigate.to“”
$driver.manage().window().maximize()最大化
$driver.quit()
注意:您需要为最新版本的Chrome浏览器安装最新的chromedriver尝试实例化firefox webdriver时也会出现同样的问题。firefox的哪个版本?什么版本的Chrome?Chrome驱动程序的哪个版本?@Abhi_Mishra,Driver=Selenium::WebDriver.for(:Chrome,:profile=>profile,:switches=>%w[--忽略证书错误--禁用弹出窗口阻止--禁用翻译])代码显示在粘贴到问题中的irb会话中。另一种解决方案包括报告问题:-)这在最新版本的backport
中已修复。看见