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或:开关 . 请改用Selenium :: WebDriver :: Chrome :: Options#add_argument .
使用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,
browser: :chrome,
desired_capabilities: caps
)
end
Capybara.default_driver = :selenium_chrome
4 回答
1)确保你没有其他注册的驱动程序,我自己犯了这个错误并且有一个
iphone
驱动程序,它以旧方式使用args
,这就是我收到警告的原因 .2)确保您在Linux上有Chrome版本 57+ ,在macOS上有 59+ 或在Windows上有 60+ ;
3)添加/更新gem
selenium-webdriver
;4)将以下 driver 添加到
spec_helper.rb
或rails_helper.rb
:使用Rails应用程序运行无头Chrome的最简单方法是将以下宝石添加到
Gemfile
并使用以下内容更新
application_system_test_case.rb
:没有必要传递
args
,因为驱动程序已经可以使用,可用的驱动程序是:rack_test
,:selenium
,:selenium_chrome
,:selenium_chrome_headless
.你可以运行
Headless Chrome
或者您也可以运行
Chrome
并查看测试运行Windows 60支持Windows 60 .
下载"Chome Canary"并在
chromeOptions.
中将安装路径指定为binary
下载最新的“chromedriver”并添加到环境变量中的路径 .
我可以使用当前版本的Chrome,但它会显示一个空白窗口 . 如果你想摆脱它,那么你需要使用“Chrome Canary”版本 .
下面的代码是@ lucas-caton和@ shawn-derik的答案的组合,但是解决了我上面提到的问题 .