导航超时后关闭浏览器

南南

我在下面使用nodejs + puppeteer编写了以下代码,其目的是对用户网站进行截图:

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://MY_WEBSITE/try/slowURL',{timeout: 30000, waitUntil: 'networkidle0' });//timeout 30 seconds
await page.setViewport({width: 1920, height: 1080});
await page.screenshot({path: pathUpload});
await browser.close();

它的操作非常简单,但是为了测试超时,我创建了一个页面(http://MY_WEBSITE/try/slowURL),该页面需要200秒的加载时间。

根据操纵up超时(timeout: 30000),有超过100%的导航超时的可能性发生30000ms以上的错误,特别是因为我强迫这样做。

问题

通过该htop命令(在Linux中使用),即使系统崩溃并显示“ TimeoutError”,我也可以看到浏览器尚未关闭。

而且,如果没有关闭浏览器(如进行扫描),则服务器很有可能用完内存,我不希望这样做。

我怎么解决这个问题?

托马斯·唐多夫

您想将代码包装到一个try..catch..finally语句中以处理错误并关闭浏览器。

代码样例

const browser = await puppeteer.launch();
try {
    const page = await browser.newPage();
    await page.goto(/* ... */);
    // more code which might throw...
} catch (err) {
    console.error('error', err.message);
} finally {
    await browser.close();
}

您的主要代码在一个try内执行catch块显示可能发生的任何类型的错误。finally部分是脚本中始终执行的部分,不仅是在引发错误时。这样,无论是否发生错误,您的脚本都将调用该browser.close函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章