我目前有一个Rails应用程序,试图让无头的chrome进行测试。
capybara 版本:2.15.1
Selenium Webdriver:3.11.0
使用下面的docker镜像:
https://github.com/SeleniumHQ/docker-selenium **
没有无头选项,我会看到浏览器启动并且测试运行没有问题。但是,当我将无头参数添加到功能时,测试始终失败,无法找到元素。当我查看screenshots / html时,我所看到的都是空白网页,而PNG截图则是完全空白的白屏。
<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>
这是我用来设置驱动程序的硒助手文件。
Capybara.register_driver :remote_browser do |app|
selenium = ENV.fetch('SELENIUM_ADDR', 'selenium')
WebMock.disable_net_connect!(
:allow => [
'api.knapsackpro.com',
selenium,
Capybara.server_host,
],
)
capabilities = {
"browserName" => "chrome",
"goog:chromeOptions" => {
args: %w[headless disable-gpu window-size=1920,1080 no-sandbox]
}
}
Capybara::Selenium::Driver.new(app, browser: :remote, url: "http://#{selenium}:4444/wd/hub", desired_capabilities: capabilities)
end
Capybara.javascript_driver = :remote_browser
Capybara::Screenshot.register_driver(:remote_browser) do |driver, path|
driver.browser.save_screenshot(File.join('..', path))
end
最佳答案
您可以尝试以下方法:
在Gemfile中:
group :test do
gem 'capybara', '~> 3.31'
gem 'capybara-screenshot', '~> 1.0'
gem 'selenium-webdriver', '~> 3.142'
在spec / rails_helper.rb中:Capybara.register_driver :headless_chrome do |app|
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-extensions')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1920,1080')
options.add_argument('disable-infobars')
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.javascript_driver = :headless_chrome
Capybara::Screenshot.register_driver(:headless_chrome) do |driver, path|
driver.browser.save_screenshot(path)
end