【问题标题】:Cypress: Typescript custom commands not working赛普拉斯:打字稿自定义命令不起作用
【发布时间】:2021-08-25 11:05:36
【问题描述】:

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

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

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

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 &”类型上不存在属性“clickByLinkText” 事件发射器'。

我的 support/index.ts 中有 import "./commands";

【问题讨论】:

    标签: typescript cypress


    【解决方案1】:

    您必须像这样添加自定义命令。你可以在这里查看讨论 - 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 级别,同样在您的 tsconfig.json 文件中添加 "node_modules/cypress"includes 下。

    【讨论】:

    • 你确定吗?这不是它在示例中的工作方式,并且查看其他存储库我看不到他们这样做。
    • 嘿,我在答案中添加了一个 GitHub 线程。我遇到了和你一样的问题,通过这两个变化我能够解决它。
    • 谢谢,通过从我的 commands.ts 中删除导入,我修复了它(我有更多错误要修复,但至少不是我的命令)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2021-03-01
    相关资源
    最近更新 更多