【问题标题】:Chromium/chrome running headless: wait for page load when using --screenshot?Chromium/chrome 无头运行:使用--screenshot 时等待页面加载?
【发布时间】:2025-12-04 07:10:02
【问题描述】:

尝试使用无头 Chrome 截取屏幕截图,但它会在页面加载之前执行 --screenshot。在运行 zsh 的 MacOS 上,我这样调用它:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome https://example.com/foo.html --screenshot=/Users/myhome/foo.png

有没有办法等到页面加载完毕再截屏?

【问题讨论】:

  • 你浏览过这个页面吗:bleepingcomputer.com/news/software/…?虽然它谈到在 Windows 上这样做,但论点是相同的
  • 我做到了,阿塞什,但谢谢你。不幸的是,该文章有些过时,并且在页面需要几秒钟才能加载时不起作用。我终于知道我需要使用 Puppeteer。

标签: chromium google-chrome-headless


【解决方案1】:

事实证明,答案是那些命令行选项不能很好地工作并且已被 Puppeteer 取代。这是我创建的脚本(为简洁起见硬编码值)。

这是完整的代码。

const puppeteer = require('puppeteer');
const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}
async function run () {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://twitter.com/gnuman1979/status/1239523796542992387');
  await sleep(2000)
  await page.screenshot({path: './foo.png'});
  browser.close();
}
run();

另存为 foo.js,然后使用 node 运行:

$ node foo.js

【讨论】: