node.js - Node puppeteer 截图整页 SPA

标签 node.js puppeteer google-chrome-headless

我有一个带滚动功能的单页应用程序。我想截取整个页面的屏幕截图,但它只给了我可见的部分。我怎样才能让它拍摄整个页面?

  const browser = await puppeteer.launch(options);
  const page = await browser.newPage();
  await page.goto(url);
  await page.screenshot({ path: 'page.png', fullPage: true })
  await browser.close();

最佳答案

实际上这里发生了什么,您的页面可能需要一段时间才能完全加载。所以我们必须增加超时时间。并且在截屏之前先暂停 500ms,然后再截全页。试试下面的代码。

const puppeteer = require('puppeteer');

async function runTest() {
const browser = await puppeteer.launch({
    headless: false,
    timeout: 100000
});

const page = await browser.newPage();
const url = 'https://stackoverflow.com/questions/47616985/node-puppeteer-take-screenshot-full-page-spa';

await page.goto(url, {
    waitUntil: 'networkidle2'
});
await page.waitFor(500);

await page.screenshot({ path: 'fullpage.png', fullPage: true });
browser.close();
}

runTest();

关于node.js - Node puppeteer 截图整页 SPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616985/

相关文章:

javascript - 为什么 BST(英国夏令时/夏令时)被添加到我的 Node 日期时间中?

puppeteer - 如何找到或选择合适的 Chrome/Chromium 版本号?

javascript - Puppeteer 有什么方法可以从 Chrome 网络选项卡获取准确的数据吗?

go - 如何将本地HTML加载到 headless Chrome

python-3.x - 使用 Selenium 的 headless Chrome - 401 未经授权的访问

javascript - Puppeteer 获取第 3 方 cookie

node.js - MongoDB:在集合上设置 TTL 索引时出错: session

node.js - 使用 node.js 包含 HTML block

javascript - GraphQL "Cannot return null for non-nullable"

node.js - 如何使用 Puppeteer 抓取无限滚动网站