跳至主要內容

功能

功能是對遠端介面的定義。它可以幫助 WebdriverIO 理解您希望在哪個瀏覽器或行動環境中執行測試。當您在本地開發測試時,功能並不那麼重要,因為您大部分時間都在一個遠端介面上執行它,但在 CI/CD 中運行大量整合測試時,功能就變得更加重要。

資訊

功能物件的格式由 WebDriver 規範明確定義。如果使用者定義的功能不符合該規範,WebdriverIO 測試執行器將會提前失敗。

自訂功能

雖然固定定義的功能數量非常少,但每個人都可以提供和接受特定於自動化驅動程式或遠端介面的自訂功能

瀏覽器特定功能擴充

  • goog:chromeOptionsChromedriver 擴充功能,僅適用於在 Chrome 中測試
  • moz:firefoxOptionsGeckodriver 擴充功能,僅適用於在 Firefox 中測試
  • ms:edgeOptions:當使用 EdgeDriver 測試 Chromium Edge 時,用於指定環境的 EdgeOptions

雲端供應商功能擴充

自動化引擎功能擴充

WebdriverIO 功能管理瀏覽器驅動程式選項

WebdriverIO 會為您管理安裝和執行瀏覽器驅動程式。WebdriverIO 使用自訂功能,允許您將參數傳遞到驅動程式。

wdio:chromedriverOptions

啟動 Chromedriver 時傳遞到其中的特定選項。

wdio:geckodriverOptions

啟動 Geckodriver 時傳遞到其中的特定選項。

wdio:edgedriverOptions

啟動 Edgedriver 時傳遞到其中的特定選項。

wdio:safaridriverOptions

啟動 Safari 時傳遞到其中的特定選項。

wdio:maxInstances

特定瀏覽器/功能的最大平行執行工作執行個體總數。優先於 maxInstancesmaxInstancesPerCapability

類型:number

wdio:specs

定義該瀏覽器/功能的測試執行規格。與一般的 specs 設定選項相同,但特定於瀏覽器/功能。優先於 specs

類型:(String | String[])[]

wdio:exclude

從該瀏覽器/功能的測試執行中排除規格。與一般的 exclude 設定選項相同,但特定於瀏覽器/功能。優先於 exclude

類型:String[]

wdio:enforceWebDriverClassic

預設情況下,WebdriverIO 會嘗試建立 WebDriver Bidi 會話。如果您不希望這樣,可以設定此旗標來停用此行為。

類型:boolean

常見驅動程式選項

雖然所有驅動程式都提供不同的組態參數,但 WebdriverIO 理解並使用一些常見的參數來設定您的驅動程式或瀏覽器

cacheDir

快取目錄根目錄的路徑。此目錄用於儲存嘗試啟動會話時下載的所有驅動程式。

類型:string
預設值:process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

自訂驅動程式二進位檔的路徑。如果設定,WebdriverIO 將不會嘗試下載驅動程式,而是會使用此路徑提供的驅動程式。請確保驅動程式與您使用的瀏覽器相容。

您可以透過 CHROMEDRIVER_PATHGECKODRIVER_PATHEDGEDRIVER_PATH 環境變數提供此路徑。

類型:string

注意

如果設定了驅動程式 binary,WebdriverIO 將不會嘗試下載驅動程式,而是會使用此路徑提供的驅動程式。請確保驅動程式與您使用的瀏覽器相容。

瀏覽器特定驅動程式選項

為了將選項傳遞到驅動程式,您可以使用以下自訂功能

  • Chrome 或 Chromium:wdio:chromedriverOptions
  • Firefox:wdio:geckodriverOptions
  • Microsoft Egde:wdio:edgedriverOptions
  • Safari:wdio:safaridriverOptions
adbPort

ADB 驅動程式應該執行的連接埠。

範例:9515

類型:number

urlBase

命令的基本 URL 路徑前置詞,例如 wd/url

範例:/

類型:string

logPath

將伺服器記錄寫入檔案,而不是 stderr,將記錄層級提高到 INFO

類型:string

logLevel

設定記錄層級。可能的選項 ALLDEBUGINFOWARNINGSEVEREOFF

類型:string

verbose

詳細記錄 (相當於 --log-level=ALL)

類型:boolean

silent

不記錄任何內容 (相當於 --log-level=OFF)

類型:boolean

appendLog

附加記錄檔而不是重寫。

類型:boolean

replayable

詳細記錄且不截斷長字串,以便可以重播記錄 (實驗性)。

類型:boolean

readableTimestamp

將可讀取的時間戳記新增至記錄。

類型:boolean

enableChromeLogs

顯示瀏覽器的記錄 (覆寫其他記錄選項)。

類型:boolean

bidiMapperPath

自訂 bidi 對應器路徑。

類型:string

allowedIps

允許連線到 EdgeDriver 的遠端 IP 位址的逗號分隔允許清單。

類型:string[]
預設值:['']

allowedOrigins

允許連線到 EdgeDriver 的要求來源的逗號分隔允許清單。使用 * 來允許任何主機來源是很危險的!

類型:string[]
預設值:['*']

特定使用案例的特殊功能

這是一個範例列表,展示為了實現特定使用案例需要應用哪些功能。

以無頭模式執行瀏覽器

以無頭模式執行瀏覽器表示執行一個沒有視窗或 UI 的瀏覽器實例。這通常用於沒有使用顯示器的 CI/CD 環境中。要以無頭模式執行瀏覽器,請應用以下功能:

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

自動化不同的瀏覽器通道

如果您想測試尚未發佈為穩定版本的瀏覽器版本,例如 Chrome Canary,您可以透過設定功能並指向您想要啟動的瀏覽器來實現,例如:

在 Chrome 上進行測試時,WebdriverIO 將根據定義的 browserVersion 自動為您下載所需的瀏覽器版本和驅動程式,例如:

{
browserName: 'chrome', // or 'chromium'
browserVersion: '116' // or '116.0.5845.96', 'stable', 'latest', 'dev', 'canary', 'beta'
}

如果您想測試手動下載的瀏覽器,您可以透過以下方式提供瀏覽器的二進位路徑:

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

此外,如果您想使用手動下載的驅動程式,您可以透過以下方式提供驅動程式的二進位路徑:

{
browserName: 'chrome', // or 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

擴展自訂功能

如果您想定義自己的功能集,以便例如儲存任意數據以在該特定功能的測試中使用,您可以透過例如設定以下內容來實現:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// custom configurations
}
}]
}

建議您在功能命名時遵循W3C 協定,該協定需要一個 : (冒號) 字元,表示特定於實作的命名空間。在您的測試中,您可以透過以下方式存取您的自訂功能,例如:

browser.capabilities['custom:caps']

為了確保型別安全,您可以透過以下方式擴展 WebdriverIO 的功能介面:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

歡迎!我能幫您什麼嗎?

WebdriverIO AI Copilot