在自定义帮助程序中使用`within`

问题描述

我正在使用CodeceptJS,并且尝试编写一个声明文本并单击“确定”的custom helper。该对话框以iframe模式弹出,表示同意使用cookie。

如果我在方案中写了以下步骤

I.amOnPage('/some-path');
within({frame: '#iframeID'},() => {
  I.see('Headline text for dialog');
  I.click('OK');
});
// ...

...我的测试似乎正常。

但是当我用它做一个自定义帮助程序并正确配置它以便可以使用时:

const { Helper } = codeceptjs;

class CookieConsent extends Helper {

  consentWithCookies() {
    const { Puppeteer } = this.helpers;
    within({frame: '#iframeID'},() => {
      Puppeteer.see('Headline text for dialog');
      Puppeteer.click('OK');
    });
  }

}

module.exports = CookieConsent;

...并将其用作步骤:

I.amOnPage('/some-path');
I.consentWithCookies();
// ...

...它似乎不起作用,因为同意对话框没有像在场景中直接实现时那样被点击。根据某些console.log()的调试,完全不会调用内部回调。控制台不会引发有关未定义的within或任何可疑内容的错误。

我怀疑在自定义帮助程序中使用within无效,或者我做错了一些无法从文档中找出的错误信息。

documentation处的此警告并不能真正弄清内部使用不正确的时间,而使用await也无济于事。

如果使用不正确,可能会引起问题。如果您看到测试的怪异行为,请尝试将其重构为不在内部使用。建议尽可能在最简单的情况下使用。由于内部返回一个Promise,因此即使您不打算使用返回值,也可能有必要等待结果。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)