1

我正在将 codeceptjs 与 puppeteer 一起使用。

现在我遇到的问题我要么不知道它可以在 puppeteer 中完成,要么我不知道如何使用本地 puppeteer 来做到这一点。

我想定位一个元素并获取该元素的所有信息,然后匹配一个字符串并弹出一些特定数据。我有一些可以在本机独立 puppeteer 中运行的代码,但是我不确定如何在 Codeceptjs 中使用它。

因为 Puppeteer 在 codecptjs 中有一个帮助文件,所以我不想再次 const 要求 puppeteer,我宁愿只是将查询指向帮助程序。

let match ='';
        const targetEls = await page.$$('#element');
        for(let target of targetEls)
        {
            const cell_content = await page.evaluate(el => el.innerHTML, target);
            let county = (cell_content.match(/string_to_match/g) || []).length;
            if(county === 2)
            {
                match = cell_content.match(/http:\/\/(\w*)\.(\w*)\/(\w*)\/(\d*)/gi).pop(); // searches for url within element info and pop it out.
                break;
            }
        }

我遇到的问题是它await page.evaluate(el.innerHTML, target)不适用于 codeceptjs,因为我没有在我的步骤代码中实例化 puppeteer。但是,它在 puppeteer helper.js 中

4

1 回答 1

1

不确定,你想要什么。请描述一下问题中的代码放在哪里。

page没有全局描述,你可以使用 Puppeteer helper 的page对象来访问它。

看起来您想在自定义助手中创建方法,其中访问 puppeteer 助手用于获取其browser值,如Puppeteer helpers doc中所述:

const currentPage = this.helpers['Puppeteer'].page;
await currentPage.$$('#element'); // Get the url of the current page

因此,您的助手将包含您在问题中描述的方法,您可以从测试中调用它。

于 2019-07-08T14:06:46.307 回答