在Page对象中使用自定义函数和“ I”,在CodeceptJS中使用自定义帮助器

时间:2018-10-06 11:35:12

标签: helper puppeteer pageobjects codeceptjs

CodeceptJS社区,

  • 是否可以将自定义定义的函数(在steps_file.js下)用作 I。页面对象文件中的customFunction()

  • 是否可以在我的自定义帮助文件

  • 中使用本机codeceptjs函数(例如 I.click()

我在文档和其他来源中找不到任何帮助。有什么办法可以做到这一点?

  • 并且有什么方法可以在puppeteer helper中使用xpath定位器吗?

    this.helpers ['Puppeteer']。page.click(xpath);

3 个答案:

答案 0 :(得分:0)

在pageObjects中使用自定义步骤时,我遇到了同样的问题。 为了避免这种情况,我将actor(I)作为参数传递给了我的pageObject函数。

页面对象:

const I = actor();

       module.exports = {

           doSomething(I){
                 I.login();
           }
};

测试场景:

Scenario('Test something' (I,pageObject)=>{
     pageObject.doSomething(I)
})

在这种情况下,pageObjects将可以访问I的所有自定义步骤:)

答案 1 :(得分:0)

感谢您分享Matheus。我使用了不同的解决方案。我没有在每个页面对象方法中写“ I”对象(这对我也是一个选择),而是创建了一个自定义帮助程序文件,并使用如下所示的puppeteer helper编写了所有方法;

async method() {
    await this.helpers['Puppeteer'].click(xpath);
}

我可以在测试和页面对象中调用此方法

I.method();

答案 2 :(得分:0)

我遇到了同样的问题,当我查看打字稿定义时,我注意到每个页面对象等中都需要的actor()具有自定义步骤参数。

因此,这对我来说可以用自定义步骤扩展steps_file.js;扩展const I = actor();

const customSteps = require('./steps_file');
const I = actor(customSteps());

此后,我可以在页面对象中使用所有方法,例如在测试场景中,这些场景正在从steps_file.js访问方法