Cypress.ensure
Cypress.ensure
是一组用于断言的辅助方法,主要适用于编写自定义查询或自定义命令。
Cypress.ensure
上的大多数函数接受一个subject
参数,检查断言,并在断言失败时抛出错误。这些函数没有返回值。
语法
// 参数类型
Cypress.ensure.isType(subject, type, commandName, cy)
Cypress.ensure.isElement(subject, commandName, cy)
Cypress.ensure.isWindow(subject, commandName, cy)
Cypress.ensure.isDocument(subject, commandName, cy)
// DOM元素状态
Cypress.ensure.isAttached(subject, commandName, cy)
Cypress.ensure.isNotDisabled(subject, commandName)
Cypress.ensure.isNotHiddenByAncestors(subject, commandName)
Cypress.ensure.isNotReadonly(subject, commandName)
Cypress.ensure.isScrollable(subject, commandName)
Cypress.ensure.isStrictlyVisible(subject, commandName)
Cypress.ensure.isVisible(subject, commandName)
caution
这些函数中的许多接受一个可选的 onFail
参数。这是一个用于自定义抛出错误的遗留功能,可能在未来的版本中移除;我们建议不要依赖它。如果需要更多对抛出错误的控制,请编写自己的 ensure
函数。
用法
正确用法
Cypress.Commands.addQuery('getChildById', function (id) {
return (subject) => {
// 验证 subject 是一个元素、文档或窗口对象
Cypress.ensure.isType(
subject,
['element', 'document', 'window'],
'getChildById',
cy
)
return $$(`#${id}`, subject)
}
})
const queryName = 'verifyElementActionable'
Cypress.Commands.addQuery(queryName, function (...args) {
return (subject) => {
// 验证 subject 满足多种条件
Cypress.ensure.isElement(subject, queryName, cy)
Cypress.ensure.isVisible(subject, queryName, cy)
Cypress.ensure.isNotDisabled(subject, queryName, cy)
Cypress.ensure.isNotReadonly(subject, queryName, cy)
return subject
}
})
另请参阅
- "自定义查询" 包含更多关于编写自定义查询的信息,这是
ensure
函数的主要用例。