跳至主要内容

自定义匹配器

WebdriverIO 使用 Jest 风格的 expect 断言库,该库具有专门的功能和自定义匹配器,适用于运行 Web 和移动测试。虽然匹配器库很大,但它肯定不适合所有可能的情况。因此,可以使用您定义的自定义匹配器扩展现有匹配器。

警告

虽然目前特定于 browser 对象或 元素 实例的匹配器定义方式没有区别,但这在将来肯定会发生变化。请关注 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