首页 > 解决方案 > 如何在容器中的黄瓜命令后打开 Chrome 浏览器的本地实例?

问题描述

我有一个 ruby​​ 测试自动化项目,水豚在无头模式的容器中运行。我想在容器内运行时打开主机上的浏览器以启动自动化。

自动化项目位于容器内。容器无头模式正在工作。我希望主机负责打开 Chrome 浏览器并自动执行测试。

我的 env.rb 文件:

require 'capybara'
require 'capybara/dsl'
require 'capybara/cucumber'
require 'selenium-webdriver'
require 'rspec'
require 'site_prism'
require 'capybara/rspec/matchers'
require 'capybara/rspec/matcher_proxies'
require 'webdrivers'
require 'builder'
require 'pry'

Capybara.register_driver :chrome_headless do |app|
  Capybara::Selenium::Driver.new app, browser: :chrome,
  options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
end

Capybara.configure do |config|
  config.default_driver = :selenium_chrome
end

Capybara.register_driver :headless_chrome do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
      'goog:chromeOptions': { args: %w(no-sandbox headless disable-gpu window-size=1280,1024 disable-features=VizDisplayCompositor) } )
  Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities)
end

Capybara.register_driver :chrome_headless do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--window-size=1920,1080')
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-dev-shm-usage')

  Capybara::Selenium::Driver.new(app,
                                 browser: :chrome,
                                 options: options)
end

Capybara.configure do |config|
  Capybara.javascript_driver = :headless_chrome
  #Capybara.default_driver = :chrome_headless
  Capybara.default_driver = :selenium_chrome
  config.default_max_wait_time = 15
  config.app_host = 'https://www.google.com'
end

标签: rubydockertestingautomated-testscapybara

解决方案


推荐阅读