首页 > 解决方案 > 如何在 CodeCeptjs 中调用 customhelper?

问题描述

如何调用customhelper中定义的方法?

我的自定义助手

const { Helper } = codeceptjs;
const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
const expect = chai.expect;

class MyHelper extends Helper {

  async JavaScriptclick(LocatorVale)  {
    await browser.waitForAngularEnabled(true);       
    browser.executeScript("arguments[0].click();", element(by.xpath(LocatorVale))); 

  }

}

module.exports = MyHelper;

代码.js

helpers: {
    MyHelper: {
      require: './myhelper_helper.js',
    },

步骤文件.js

Scenario('Add a new user group', (I, MyHelper) => {  
   MyHelper.JavaScriptclick(‘.badged-button.mat-raised-button.mat-primar')
});

如果我执行上面的代码,我会收到以下错误

   Add a new user group:
     Object of type MyHelper is not defined in container  

请帮我解决这个问题。我需要单击一个按钮,但 I.click 无法找到该按钮。所以在这种情况下我不得不使用 javascriptclick。但是 I.executescript 也不起作用。因此,我需要使用本机量角器命令,因为它只能以这种方式工作。

标签: protractorcodeceptjs

解决方案


没有必要通过它的名字来调用助手。所有方法都添加到actor( I)对象中

如文档中所述:

Helper 类的方法将在I对象的测试中可用。这从实现中抽象出测试场景,并允许在后端之间轻松切换。

https://codecept.io/helpers/#extending-codeceptjs-with-custom-helopers

所以,在测试中:

Scenario('Add a new user group', (I) => {  
   I.JavaScriptclick(‘.badged-button.mat-raised-button.mat-primar')
});

推荐阅读