跳至主要內容

自訂匹配器

WebdriverIO 使用 Jest 風格的 expect 斷言函式庫,其中包含用於執行網頁和行動測試的特殊功能和自訂匹配器。雖然匹配器的函式庫很大,但它當然不適合所有可能的情況。因此,可以透過您定義的自訂匹配器來擴充現有的匹配器。

警告

雖然目前在定義特定於 browser 物件或 element 實例的匹配器方式上沒有差異,但未來肯定可能會改變。請關注 webdriverio/expect-webdriverio#1408 以取得有關此開發的更多資訊。

自訂瀏覽器匹配器

若要註冊自訂瀏覽器匹配器,請直接在您的規格檔案中或作為 wdio.conf.js 中的 before 鉤子的一部分,在 expect 物件上呼叫 extend

customMatchers/example.ts
loading...

如範例所示,匹配器函式會將預期的物件 (例如瀏覽器或元素物件) 作為第一個參數,並將預期的值作為第二個參數。然後,您可以依照下列方式使用匹配器

customMatchers/example.ts
loading...

自訂元素匹配器

與自訂瀏覽器匹配器類似,元素匹配器沒有不同之處。以下是如何建立自訂匹配器以斷言元素的 aria-label 的範例

customMatchers/example.ts
loading...

這可讓您依照下列方式呼叫斷言

customMatchers/example.ts
loading...

TypeScript 支援

如果您使用 TypeScript,則需要額外一個步驟來確保自訂匹配器的類型安全。透過使用自訂匹配器擴充 Matcher 介面,所有類型問題都會消失

customMatchers/example.ts
loading...

如果您建立了自訂非對稱匹配器,您可以依照下列方式類似地擴充 expect 類型

declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}

歡迎!我能幫您什麼嗎?

WebdriverIO AI Copilot