You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Puppeteer自动设置视口为页面全高以实现整页截图?

Puppeteer 自动适配页面完整高度实现方案

完全可以实现需求,Puppeteer针对该场景有两种成熟的实现方式,均不需要提前预知页面实际高度:

方案1:使用内置全页截图参数(最简便)

page.screenshot() 方法本身自带 fullPage 配置项,开启后Puppeteer会自动计算页面完整渲染高度,直接输出全页截图,不需要手动调整视口参数。
示例代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  // 仅需指定你需要的视口宽度,高度无需固定设置
  await page.setViewport({ width: 1000, height: 800 });
  // 等待页面渲染完成
  await page.goto('https://你的测试页面地址', { waitUntil: 'networkidle2' });
  // 开启fullPage参数即可自动截全图
  await page.screenshot({
    path: 'fullpage_screenshot.png',
    fullPage: true
  });
  await browser.close();
})();

该方案适合绝大多数普通页面的全页截图需求,无需额外处理高度计算逻辑。

方案2:手动获取页面高度调整视口

如果你需要先把视口高度调整为和页面完整高度一致(比如需要做全页交互操作、不需要内置截图逻辑的场景),可以通过执行前端JS获取页面实际高度后再更新视口参数。
示例代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  // 先设置固定视口宽度
  await page.setViewport({ width: 1000, height: 800 });
  await page.goto('https://你的测试页面地址', { waitUntil: 'networkidle2' });
  // 执行JS获取页面完整高度
  const fullPageHeight = await page.evaluate(() => document.body.scrollHeight);
  // 更新视口参数,高度替换为页面实际高度
  await page.setViewport({
    width: 1000,
    height: fullPageHeight
  });
  // 此时视口和页面高度完全匹配,无需滚动即可查看全部内容
  await page.screenshot({ path: 'fullpage_screenshot.png' });
  await browser.close();
})();

注意事项

  • 如果页面存在懒加载资源,需要先触发页面滚动加载所有懒加载内容,再计算高度或截图,否则会出现内容缺失的问题
  • 针对有动态渲染内容的页面,建议搭配 page.waitForSelector() 等API确保所有内容渲染完成后再执行后续操作

内容的提问来源于stack exchange,提问作者Jake Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:54:02