有没有办法对网站上的每个页面进行截图?

Is there a way to take a screenshot of every page on a website?

我们有几个遗留站点正在进行升级。如果能够对每个页面进行屏幕截图,然后对两个域的结果进行 md5 求和,然后测试呈现的所有内容是否匹配 100%,这将很有用。

我不确定该怎么做 - 我们已经查看了 cheerio 可以抓取网站但无法抓取屏幕截图,以及可以抓取屏幕截图但无法抓取网站的 nightwatch。有人有这方面的经验吗?

您可以使用 StormCrawler with Selenium and write a custom NavigationFilter to take the screenshot and store the md5sum of it in the document metadata. See tutorial 来介绍 SC+Selenium。

下一步可能是编写自定义索引器并将带有 md5 的 URL 转储到数据库或文件中。最后,您将对网站的较新版本执行相同的操作,并比较 table.

中文件或行的内容

一个简单的解决方案是使用 Chrome in headless mode which can also be controlled with many Node modules like Puppeteer

摘自 Google 开发者页面:

chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/

关于抓取,您可以结合使用 Cheerio 和 Puppeteer 来抓取链接并截取屏幕截图。或者,您可以找到一些工具,允许导出包含所有网站 URL 的站点地图 (example),此时应该很容易遍历它们并截取每个网址的屏幕截图。