You*_*ank 9 ruby selenium cucumber capybara google-chrome-headless
Chrome版本:59.0.3071.104
使用Cucumber,Capybara,Selenium实现无头Chrome的自动化测试.
功能/支持/ 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
Run Code Online (Sandbox Code Playgroud)
在进行黄瓜测试时,它说:
警告Selenium [DEPRECATION]:不推荐使用args或:开关.请改用Selenium :: WebDriver :: Chrome :: Options#add_argument.
使用Headless Chrome的水豚和硒的正确方法是什么?谢谢.
编辑1:我尝试使用Ruby-Binding,Capybara和工作示例进行以下操作.但它也会产生错误.
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
Run Code Online (Sandbox Code Playgroud)
错误:
> undefined method `each' for
> #<Selenium::WebDriver::Remote::Capabilities:0xd13baac> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
编辑2:下载最新的ChromeDriver 2.30
使用ChromeDriver功能和Chrome命令行开关中的示例,我收到错误消息.
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
Run Code Online (Sandbox Code Playgroud)
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, browser: :chrome,
options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
end
Capybara.javascript_driver = :chrome
Run Code Online (Sandbox Code Playgroud)
ChromeDriver 的支持已于2019年3 月 24 日结束,作者建议大家移至https://github.com/titusfortner/webdrivers,话虽如此,以下是对我有用的配置:
require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driver = ENV['DRIVER'] ? ENV['DRIVER'].to_sym : :headless_chrome
driven_by :selenium, using: driver, screen_size: [1400, 1400]
end
Run Code Online (Sandbox Code Playgroud)
运行测试时,您还可以通过传递如下DRIVER变量来指定不同的驱动程序:
$ DRIVER=firefox bin/rails test:system
$ DRIVER=headless_firefox bin/rails test:system
$ DRIVER=chrome bin/rails test:system
$ DRIVER=headless_chrome bin/rails test:system
Run Code Online (Sandbox Code Playgroud)
使用 Rails 应用程序运行无头 Chrome 的最简单方法是将以下 gem 添加到 Gemfile
gem 'chromedriver-helper'
gem 'selenium-webdriver'
Run Code Online (Sandbox Code Playgroud)
并更新您application_system_test_case.rb的以下内容:
require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driver = ENV['CHROME_HEADLESS'] == 'false' ? :selenium_chrome : :selenium_chrome_headless
driven_by driver, screen_size: [1400, 1400]
end
Run Code Online (Sandbox Code Playgroud)
无需通过,args因为驱动程序已经可用,可用驱动程序为:rack_test、:selenium、:selenium_chrome、:selenium_chrome_headless。
你可以跑 Headless Chrome
$ bin/rails test:system
Run Code Online (Sandbox Code Playgroud)
或者您也可以运行Chrome并查看在其上运行的测试
$ CHROME_HEADLESS=false bin/rails test:system
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5506 次 |
| 最近记录: |