我正在使用puppeteer核心版本19.6.3通过AWS Lambda来截图网页。下面是我的代码:
// Create a browser instance
const browser = await puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath("./"),
headless: chromium.headless,
ignoreHTTPSErrors: true,
});
// Create a new page
const page = await browser.newPage();
// Set viewport width and height
await page.setViewport({ width: pageWidth, height: pageHeight, deviceScaleFactor: scaleFactor });
// Open URL in current page
await page.goto(websiteURL);
// Capture screenshot
const screenshot = await page.screenshot();
这在大多数情况下都有效,但有时当我想截图的页面很重并且有很多iframe时,它会失败。在这些情况下,它会因Navigation timeout of 30000 ms exceeded
而失败。我不想完全摆脱超时,因为我不想让这个函数花费很长时间或者永远不会结束。
有没有什么方法可以调用page.goto()
并让它等待页面加载,但如果页面在30秒后(或其他定义的超时)没有加载,那么它就继续对未完全加载的页面进行截图?我不在乎结果截图看起来不好或不完整,我仍然希望它发生,无论如何。
1条答案
按热度按时间ncecgwcz1#
我在
page.goto()
中添加了一个try/catch,这样即使在等待加载时超时,我也可以继续截图。