ruby-on-rails - headless Chrome 空白白屏

标签 ruby-on-rails selenium docker testing webdriver

我目前有一个 Rails 应用程序,试图让 headless chrome 进行测试。

capybara 版本:2.15.1

Selenium 网络驱动程序:3.11.0

使用下面的 docker 图像:
https://github.com/SeleniumHQ/docker-selenium **

如果没有 headless 选项,我会看到浏览器启动并且测试运行没有问题。但是,当我将 headless 参数添加到功能中时,测试始终因无法找到元素而失败。当我查看屏幕截图/html 时,我看到的只是像这样的空白网页,而 PNG 屏幕截图是一个完全空白的白色屏幕。

<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>

这是我用来设置驱动程序的 selenium 帮助文件。
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'

在规范/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

关于ruby-on-rails - headless Chrome 空白白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49431570/

相关文章:

mysql - 为什么要在迁移中触发 add_index 中的唯一选项

Python 页面倒计时打印 (len(elem_href1-(number)))

java - 如何通过 cli 运行 selenium webdriver 测试

mysql - 如何删除 Rails 中使用 collection_select 保存的记录?

html - Rails 4 行元素的备用背景

jquery - ruby on Rails 的跨浏览器工具提示?

Python Selenium - 在这种情况下如何上传图像?

docker - 哪个适用于dockerized应用的google服务不需要http请求?

mysql - 如何制作无状态mysql docker容器

docker - Go-使用CompileDaemon进行Docker自动重载