木偶:waitForFunction有时永远无法解析

时间:2019-01-21 10:05:28

标签: javascript puppeteer

我有简单的Puppeteer脚本:

await page.goto(MY_URL, {waitUntil: 'load'});
const html = await page.evaluate(() => document.body.innerHTML);

然后,我检查html是否包含一些键字符串,并且该部分始终通过(我提到过,以防万一这可能会影响进一步的过程)。 之后,我等待window对象中包含一个函数。

await page.waitForFunction(() => 'myFunction' in window);

此功能写在页面的<head>标记附加在<script>中的脚本的底部。
通常,waitForFunction会按照应有的方式进行解析,但有时不会。
当我通过{timeout: 0}时,它将永远等待,永不解决。 看来这仅在无头模式下发生。

这种行为可能是什么原因?如何克服或调试此类问题?

1 个答案:

答案 0 :(得分:0)

似乎有时未加载JavaScript文件。 对我来说,解决方案是:

await page.goto(MY_URL, {waitUntil: 'networkidle2'});