如何与水豚和硒一起使用无头铬 [英] How to use headless chrome with capybara and selenium
问题描述
Chrome版本:59.0.3071.104
Chrome version: 59.0.3071.104
使用Cucumber,Capybara,Selenium来实现无头Chrome的自动化测试。
Using Cucumber, Capybara, Selenium to implement automation testing with Headless Chrome.
功能/支持/env.rb
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
运行黄瓜测试时,它说:
When running a cucumber test, it says:
WARN Selenium [DEPRECATION]:args或:switches已过时。改用
Selenium :: WebDriver :: Chrome :: Options#add_argument。
WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use Selenium::WebDriver::Chrome::Options#add_argument instead.
使用水豚的正确方法是什么和硒与无头铬。谢谢。
What is the correct way to use capybara and selenium with Headless Chrome. Thank you.
EDIT 1: I tried the following using Ruby-Binding, Capybara and Working Example. But it gives errors as well.
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
使用中的示例href = https://sites.google.com/a/chromium.org/chromedriver/capabilities rel = noreferrer> ChromeDriver功能& Chrome命令行开关出现错误。
Using the example from ChromeDriver Capabilities & Chrome Command Line Switches I get an error.
Net :: ReadTimeout(Net :: ReadTimeout)
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
推荐答案
1)确保您没有其他注册的驱动程序,我自己犯了这个错误,并且有一个 iphone
驱动程序,该驱动程序以旧方式使用了 args
,这就是为什么我得到
1) Make sure you don't have another registered driver, I made this mistake myself and had an iphone
driver, which was using the args
in the old way, that's why I was getting the warning.
2)确保在Linux上具有Chrome版本 57 + ,在MacOS上具有 59 + 在Windows上为 60 + ;
2) Make sure you have Chrome version 57+ on Linux, 59+ on macOS or 60+ on Windows;
3)添加/更新gem selenium-webdriver
;
3) Add/update the gem selenium-webdriver
;
4)添加以下 driver 到您的 spec_helper.rb
或 rails_helper.rb
:
4) Add the following driver to your spec_helper.rb
or rails_helper.rb
:
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new app, browser: :chrome,
options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
end
Capybara.javascript_driver = :chrome
这篇关于如何与水豚和硒一起使用无头铬的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!