浏览器

自行捕获浏览器可能是一项繁琐且耗时的任务。但是,Karma 可以为您自动执行此操作。只需将您想要捕获的浏览器添加到配置文件中。

browsers: ['Chrome']

然后,Karma 将负责自动捕获这些浏览器,并在作业结束后关闭它们。

注意

大多数浏览器启动器需要作为插件加载。

可用的浏览器启动器 #

以下是如何将 Firefox 添加到您的测试套件中的示例

# Install the launcher first with npm:
$ npm install karma-firefox-launcher --save-dev

然后,在您的配置文件中,将浏览器名称添加到 browsers 数组中。

module.exports = function(config) {
  config.set({
    browsers : ['Chrome', 'Firefox']
  });
};

另外,请记住,browsers 配置设置默认情况下为空。

当然,您也可以编写自定义插件

手动捕获任何浏览器 #

您还可以通过简单地打开 http://<hostname>:<port>/ 来捕获浏览器,其中 <hostname> 是 Karma 服务器运行的机器的 IP 地址或主机名,<port> 是 Karma 服务器侦听的端口(默认情况下为 9876)。使用默认设置,只需将您的浏览器指向 http://localhost:9876/ 即可。

这允许您在与运行 Karma 的机器位于同一网络中的任何设备(例如平板电脑或手机)上捕获浏览器(或使用本地隧道)。

已配置的启动器 #

某些启动器也可以配置

sauceLabs: {
  username: 'michael_jackson'
}

或定义为已配置的启动器

customLaunchers: {
  chrome_without_security: {
    base: 'Chrome',
    flags: ['--disable-web-security']
  },
  sauce_chrome_win: {
    base: 'SauceLabs',
    browserName: 'chrome',
    platform: 'windows'
  }
}

可以为任何自定义启动器设置显示名称。如果设置,则此名称将用于报告而不是用户代理。以下是一个代码片段示例,说明如何为自定义启动器设置显示名称。

customLaunchers: {
  chrome_without_security: {
    base: 'Chrome',
    flags: ['--disable-web-security'],
    displayName: 'Chrome w/o security'
  }
}

如果定义如上所示,则浏览器将在日志和报告中显示为 Chrome w/o security

浏览器二进制文件的正确路径 #

每个插件都有一些默认路径,用于在特定操作系统上查找浏览器二进制文件。您可以通过 <BROWSER>_BIN 环境变量覆盖这些设置,或者通过创建 符号链接 来覆盖这些设置。

POSIX shell #

# Changing the path to the Chrome binary
$ export CHROME_BIN=/usr/local/bin/my-chrome-build

# Changing the path to the Chrome Canary binary
$ export CHROME_CANARY_BIN=/usr/local/bin/my-chrome-build

# Changing the path to the PhantomJs binary
$ export PHANTOMJS_BIN=$HOME/local/bin/phantomjs

Windows cmd.exe #

C:> SET IE_BIN=C:\Program Files\Internet Explorer\iexplore.exe

Windows Powershell #

$Env:FIREFOX_BIN = 'c:\Program Files (x86)\Mozilla Firefox 4.0 Beta 6\firefox.exe'

自定义浏览器 #

// in the karma.conf.js
browsers: ['/usr/local/bin/custom-browser.sh'],

// from cli
karma start --browsers /usr/local/bin/custom-browser.sh

浏览器脚本需要接受一个参数,该参数是带有 ID 参数的 URL,用于连接到服务器。提供的 ID 由服务器用于跟踪捕获的特定浏览器。