首页 > 解决方案 > 赛普拉斯:打字稿自定义命令不起作用

问题描述

更新: https ://github.com/cypress-io/cypress/issues/1065#issuecomment-351769720 从我的 commands.ts 中删除导入修复了它。谢谢

我正在尝试将我的柏树项目转换为使用 TypeScript。我正在关注https://docs.cypress.io/guides/tooling/typescript-support#Types-for-custom-commands上的信息

我已经修复了我遇到的所有其他编译错误,但我仍然无法让我的任何自定义命令正常工作,例如:

命令.ts:

declare namespace Cypress {
  interface Chainable {
    clickByLinkText(link: string): Chainable<Element>;
  }
}

// Finds and clicks a given link by it's link text
Cypress.Commands.add("clickByLinkText", (link: string) => {
  cy.get("a").contains(link).click();
});

当我尝试在测试中调用该函数时,我得到:

TS2339:“cy & EventEmitter”类型上不存在属性“clickByLinkText”。

我有导入“./commands”;在我的支持/index.ts

标签: typescriptcypress

解决方案


您必须像这样添加自定义命令。你可以在这里查看讨论 - https://github.com/cypress-io/cypress/issues/1065#issuecomment-351769720 -

function clickByLinkText(link: string) {
  cy.get("a").contains(link).click();
}
Cypress.Commands.add("clickByLinkText", clickByLinkText)

考虑到 node_modules 和 tsconfig.json 文件处于 sam 级别,"node_modules/cypress"也在您的 tsconfig.json 文件中添加。includes


推荐阅读