瀏覽器

自行擷取瀏覽器可能是一項繁瑣且耗時的任務。然而,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://<主機名稱>:<端口>/ 來擷取瀏覽器,其中 <主機名稱> 是執行 Karma 伺服器的機器 IP 位址或主機名稱,而 <端口> 是 Karma 伺服器正在監聽的端口(預設為 9876)。使用預設設定,只需將您的瀏覽器指向 https://127.0.0.1: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 無安全性

瀏覽器二進制檔案的正確路徑 #

每個插件都有一些預設路徑,用於在特定作業系統上尋找瀏覽器二進制檔案。您可以透過 <BROWSER>_BIN 環境變數覆蓋這些設定,或者建立 符號連結

POSIX 殼層 #

# 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 由伺服器用於追蹤擷取了哪個特定瀏覽器。