【问题标题】:Is there a way to make custom commands available in namespace or an object in Cypress?有没有办法让自定义命令在命名空间或赛普拉斯的对象中可用?
【发布时间】:2021-03-23 10:27:53
【问题描述】:

我有一个 typescript 项目,其中包含几个执行如下导航的“Cypress 自定义命令”:

Cypress.Commands.add('goToHome', () => { /* Logic here */ });
Cypress.Commands.add('goToProducts', () => { /* Logic here */ });

现在。我可以像这样运行这些命令:cy.goToHome();

但是,我希望这些命令 not 可以从 cy 对象访问,而不是让这些命令可以从这样的自定义对象访问:

cy.header.goToHome();cy.getHeader().goToHome();

赛普拉斯有没有办法做到这一点?

【问题讨论】:

    标签: javascript typescript cypress


    【解决方案1】:

    好吧,您总是可以定义一个包含只能从该命名空间访问的函数的类。一种组织代码并保持整洁的好方法。

    例如,将文件 navigation.js 添加到您的支持文件夹。添加以下代码:

    class Navigation {
    
    
       goToHome(){ /* Logic here */ }
    
       goToProducts() { /* Logic here */ }
    
    }
    
    export default new Navigation();
    

    然后,将其适当地导入到您的规范文件中:

    import Navigation from '../../support/navigation';
    

    然后,在您的规范文件中,您将能够通过 Navigation 命名空间访问这些函数。例如:

    it('I can navigate to the homepage', function() {
    
        Navigation.goToHome();
        
    })
    

    希望这就是您的意思,并且对您有所帮助。

    【讨论】:

    • 感谢您的详细回答,我知道我可以创建一个助手类并在那里拥有我的助手功能。但我想知道是否有一种方法可以从全局 cy 对象访问它。
    猜你喜欢
    • 2020-02-08
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    相关资源
    最近更新 更多