CodeceptJS社区,
是否可以将自定义定义的函数(在steps_file.js下)用作 I。页面对象文件中的customFunction()。
是否可以在我的自定义帮助文件
我在文档和其他来源中找不到任何帮助。有什么办法可以做到这一点?
并且有什么方法可以在puppeteer helper中使用xpath定位器吗?
this.helpers ['Puppeteer']。page.click(xpath);
答案 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访问方法