如何将Cypress中get方法的返回值通过链式调用传入自定义命令
Cypress 链式自定义命令实现方案
这种调用形式完全可以实现,Cypress 原生支持自定义命令承接上一条链式命令的返回值,无需额外把别名作为参数传入。
核心配置说明
定义自定义命令时,添加prevSubject: true的配置项即可,该配置会将上一条命令的返回值作为自定义命令的第一个入参自动注入:
// 自定义命令定义 Cypress.Commands.add('customCommand', { prevSubject: true }, (subject, name) => { // 此处的subject就是cy.get('@alias')返回的查询结果,可直接使用 // 示例逻辑:输出传入的name和对应元素的文本内容 cy.wrap(subject) .invoke('text') .then(elementText => { console.log(`名称:${name},元素文本:${elementText}`) }) // 如果需要支持后续继续链式调用其他命令,返回包装后的subject即可 return cy.wrap(subject) })
调用示例
你期望的链式写法可直接正常运行:cy.get('@alias').customCommand(name)
扩展兼容说明
如果需要同时兼容参数传递和链式调用两种写法,可以将prevSubject的值设置为optional,两种调用形式都会生效:
- 链式调用:
cy.get('@alias').customCommand(name) - 参数传递:
cy.customCommand('@alias', name)
内容的提问来源于stack exchange,提问作者Lukáš Secký
相关产品推荐
相关产品推荐

