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,Capybara和Working 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