必须使用手动的wait来获得CodeceptJS / Puppeteer自定义帮助程序,以查看表格td tr

问题描述

我有一个codeceptjs / puppeteer项目,并且正在构建一个自定义帮助程序来访问表中的信息。我已经能够完成这项工作,但是只能在测试步骤中等待两秒钟,然后再在自定义帮助程序类中调用async函数。鉴于所有这些都是基于async / await的,因此我必须相信我只是缺少了一些东西,并且有一种干净的方法可以做到这一点。

我的助手类中的函数。

  async getRowCount() { 
    //const browser = this.helpers['Puppeteer'].browser;
    const page = this.helpers['Puppeteer'].page;

    page.waitForSelector('tbody');
    let rowCount = await page.$$eval('tbody tr',rows => rows.length);
    return rowCount;

    // These work
    // page.waitForSelector('a[href="#/site/create"]');
    // page.click('a[href="#/site/create"]');
    
  }

下面是我的codeceptjs场景。

Scenario.only('Table check ALL',async (I,loginAs) => {
  loginAs('bob');
  I.say(await I.getRowCount());
  I.wait(3);
});

当代码如上所示时,我的行计数始终为0。

但是,如果我在I.getRowCount()函数之前等待1秒钟,则将返回tbody tr选择器的正确总行数。

如果任何人都可以帮助我了解为什么会发生这种情况以及我可以采取什么措施来解决此问题,那么我就不必在手动等待步骤中添加代码来适应这些辅助功能(codeceptjs的核心“功能”),我非常感谢。

谢谢!

解决方法

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

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

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