我正在使用 Puppeteer(实际上是 PuppeteerSharp,但 API 相同)从我的应用程序中截取网页的屏幕截图。
问题是页面加载后通过 JavaScript 进行了几次布局更改,因此在看到页面的“最终”呈现版本之前经过了几秒钟。
目前我只是在截屏前等待“安全”的几秒钟,但这显然不是一个好方法,因为机器上的暂时性能下降可能会导致渲染不完整。
由于 puppeteer 在后台使用 Chromium,有没有办法拦截 Chromium 的布局/渲染事件(就像你可以在 Chrome 的 DevTools 控制台中做的那样)?或者,真的,知道页面何时停止“变化”的任何其他方式(我的意思是视觉上)
编辑,更多信息:内容是动态的,所以我事先不知道它将绘制什么以及如何绘制。基本上,它是一个绘制不同图表/表格/图像/等的框架。(不幸的是不是开源的)。然而,通过使用 Chrome DevTools 中的“性能”工具进行测试,我注意到在页面完成渲染后,时间轴中的所有活动都会停止,所以如果我可以访问该信息,那就太好了。不幸的是,在 Puppeteer(我可以看到)中做到这一点的唯一方法是使用“跟踪”功能,但这并不是实时运行的。相反,它将跟踪转储到文件,并且缓冲区太大而无法使用(在我的页面已经完成渲染后文件仍然是 0 字节,当我调用“stopTracing”时它只会刷新到磁盘)。我需要的是实时访问 puppeteer 的跟踪功能,例如通过事件或内存流,但这似乎不受 API 支持。有什么办法吗?