Google Chrome
Google Chrome 附加组件允许 Travis CI 构建在运行时安装 Google Chrome。
对于 Linux,您必须在 Ubuntu Xenial 16.04 或更高版本的构建环境上运行。
选择 Chrome 版本 #
您可以安装 stable
或 beta
版本的 Chrome,但不能选择特定的数字版本。
addons:
chrome: stable
请注意,当 Google 更新
stable
或beta
版本时,底层 Chrome 版本可能会在一次构建到另一次构建之间发生变化。
无头模式 #
您可以在 无头模式 下使用 Google Chrome。
沙盒 #
出于安全原因,Google Chrome 在 基于容器的环境 中运行时无法提供沙盒功能。
在这种情况下,您可能会看到类似以下错误消息
30 11 2017 13:35:42.245:ERROR [launcher]: Cannot start Chrome
[4315:4315:1130/133541.781662:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /opt/google/chrome/chrome-sandbox is owned by root and has mode 4755.
或类似以下消息
Selenium::WebDriver::Error::UnknownError:
unknown error: Chrome failed to start: crashed
(Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Linux 4.14.12-041412-generic x86_64)
要在基于容器的环境中使用 Chrome,请将 --no-sandbox
标志传递给 chrome
可执行文件。
实现此方法的方式因测试框架而异。以下是一些示例。有关如何添加 --no-sandbox
标志的更多详细信息,请咨询您工具的文档。
Karma Chrome 启动器 #
使用 Karma 的自定义启动器插件,您需要将其添加到 flags
数组中
module.exports = function(config) {
config.set({
browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessNoSandbox'],
// you can define custom flags
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
}
})
}
Capybara #
使用 Ruby 与 Capybara 时,您需要使用适当的标志设置自定义驱动程序
require 'capybara'
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new(args: %w[no-sandbox headless disable-gpu])
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.javascript_driver = :chrome
Behat #
使用 Behat 时,您应该将选项传递给 selenium2 chrome 配置
default:
extensions:
Behat\MinkExtension:
selenium2:
# This will probably be the same always, if you follow the guide for browsers below.
wd_host: http://localhost:8643/wd/hub
capabilities:
chrome:
switches:
- "--headless"
- "--disable-gpu"
- "--no-sandbox"
javascript_session: selenium2
browser_name: chrome