Skip to main content
Cypress应用

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 函数的主要用例。