首页 > 解决方案 > 赛普拉斯:如何从自定义命令返回布尔值?

问题描述

我正在尝试编写一个自定义命令,它将元素选择器作为参数并返回一个布尔值,指示元素是否存在。但是自定义命令说明以下内容:

Type 'boolean' is not assignable to type 'CanReturnChainable'

这是我的自定义命令的代码。

declare global {
    namespace Cypress {
        interface Chainable<Subject> {
            isPresent(elementSelector: string): boolean;
        }
    }
}

Cypress.Commands.add('isPresent', (elementSelector) => {
    console.log(document.querySelector(elementSelector))
    debugger;
    return !!document.querySelector(elementSelector);
})

export {}

标签: typescriptcypresse2e-testing

解决方案


你需要包装结果,

Cypress.Commands.add('isPresent', (elementSelector) => {
  const isPresent = !!document.querySelector(elementSelector);
  return cy.wrap(isPresent);                        // this gives you a Chainable
})

但是你需要在测试中展开

it('', () => {

  cy.isPresent('#my-element').then(isPresent => {      // unwrap 
    if (isPresent) {
      ...
  

我不确定类型定义,也许它应该返回Chainable<Boolean>.


推荐阅读