ruby – 如何使用无头铬与水豚和硒

Chrome版本:59.0.3071.104

使用Cucumber,Capybara,Selenium实现无头Chrome的自动化测试.

features/support/env.rb

require 'rubygems'
require 'capybara/cucumber'

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app,:browser => :chrome,args: ['headless'])
end

Capybara.default_driver = :selenium_chrome

在进行黄瓜测试时,它说:

WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use
Selenium::WebDriver::Chrome::Options#add_argument instead.

使用Headless Chrome的水豚和硒的正确方法是什么?谢谢.

编辑1:我使用Ruby-Binding,CapybaraWorking Example尝试了以下操作.但它也给出了错误.

require 'rubygems'
require 'capybara/cucumber'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  driver = Selenium::WebDriver.for :chrome,options: options
  Capybara::Selenium::Driver.new(
    app,browser: :chrome,desired_capabilities: driver
  )
end

Capybara.default_driver = :selenium_chrome

错误

> undefined method `each' for
> #<Selenium::WebDriver::Remote::Capabilities:0xd13baac> (NoMethodError)

编辑2:
下载最新的ChromeDriver 2.30

使用ChromeDriver Capabilities& Chrome Command Line Switches我收到一个错误.

Net::ReadTimeout (Net::ReadTimeout)

require 'rubygems'
require 'capybara/cucumber'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
  caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    "chromeOptions" => {
      "binary" => "/chromedriver_win32/chromedriver.exe","args" => [ "--disable-web-security","--headless" ]
    }
  )  
  Capybara::Selenium::Driver.new(
    app,desired_capabilities: caps
  )
end

Capybara.default_driver = :selenium_chrome

解决方法

1)确保你没有其他注册的驱动程序,我自己犯了这个错误并且有一个iphone驱动程序,它以旧方式使用args,这就是我收到警告的原因.

2)确保你在Linux上有Chrome版本57,在macOS上有59或在Windows上有60;

3)添加/更新gem selenium-webdriver;

4)将以下驱动程序添加到spec_helper.rb或rails_helper.rb:

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new app,options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
end

Capybara.javascript_driver = :chrome

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...