自訂匹配器
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;
}
}
}