跳到主要内容

自定义匹配器

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

注意

虽然目前在定义特定于browser对象或element实例的匹配器之间没有区别,但这在将来可能会改变。请关注webdriverio/expect-webdriverio#1408以获取有关此开发的更多信息。

自定义浏览器匹配器

要注册自定义浏览器匹配器,请在expect对象上调用extend,可以直接在规范文件中调用,也可以作为wdio.conf.js中例如before钩子的一部分:

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;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot