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