1

嗨 CodeceptJS 社区,

  • 有没有办法在页面对象文件中使用自定义函数(在 steps_file.js 下)作为I.customFunction() 。

  • 有没有办法在我的自定义帮助文件中使用本机 codeceptjs 函数(如I.click() )

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

  • 有没有办法在 puppeteer 助手中使用 xpath 定位器?

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

4

3 回答 3

0

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

所以这对我来说可以扩展const I = actor();自定义步骤表单steps_file.js;

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

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

于 2019-03-13T15:27:24.270 回答
0

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

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

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

I.method();
于 2018-10-19T05:31:20.897 回答
0

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

页面对象:

const I = actor();

       module.exports = {

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

测试场景:

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

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

于 2018-10-17T17:24:54.967 回答