如何使用 Firefox 从命令行获取整页屏幕截图?

Nym*_*ria 18 firefox screenshot

我需要截取整个网页的屏幕截图。

我已经看到如何从命令行获取网页的整页屏幕截图?其中提出了多种截取屏幕截图的方法,但我需要使用 Firefox 以获得更好的效果。

Vol*_*gel 13

为了在 Firefox 中制作显示页面整个可滚动区域的网页截图,我提出了两种不同的方法。

两者都保存显示所有部分的页面图像或通过向下(和向右/向左)滚动可以到达的网页 - 认为所有视图位置缝合在一起;
对于长页面,图像很容易达到几千像素高。


“专业”方式 - 使用 Web 浏览器 GUI 级测试和自动化工具:

自动化工具Selenium——通常用于UI测试——可以做整页屏幕截图;不过,仅为该任务设置
它似乎有些开销

例如:

Command: open; Target: http://www.google.com
Command: captureEntirePageScreenshotAndWait; Target: \\Screenshots\\test.png
Run Code Online (Sandbox Code Playgroud)

参见so.SE:使用 Selenium IDE Firefox 插件的截图

要安装 Selenium 的 firefox 部分,请获取firefox附加组件 - 但不是从官方附加组件页面获取 - 它位于 Selenium下载页面上作为 xpi 文件。这是当前版本

(有很多用于扩展 selenium 本身的附加组件(但在 Firefox 附加组件的技术方面),在附加组件网站上都称为“Selenium ...”甚至“Selenium IDE ...” -非常混淆。)


“hackish”方式 - 通过键盘自动化使用内部 Firefox 命令:

firefox 中有一个内部命令提示符,这是一种开发工具,正如@Fireflight 指出的那样,它有一个制作屏幕截图的命令。但是,据我所知,通常无法从命令行中控制。但是我们能做的是模拟按键来使用它。

我们需要选择一个浏览器窗口,打开提示,输入firefox内部命令(使用基于当前日期和时间的文件名),运行命令,再次关闭提示:

FF=$(xdotool selectwindow)
xdotool key --window $FF Shift+F2 sleep 1
xdotool type --window $FF --delay 50 "screenshot page-$(date +%Y%m%d-%H%M%S).png --fullpage "
xdotool key --window $FF Return sleep 0.5 key --window $FF Shift+F2
Run Code Online (Sandbox Code Playgroud)

命令行实用程序xdotool可以在 X11 事件级别与 X 窗口交互。我们用它来选择显示页面的firefox窗口,并发送正确的击键来制作屏幕截图。

(这是一种有点脆弱的方法:它取决于键盘时间,如果提示已经打开或包含文本(要打开或关闭它,请按 Shift-F2),它将不起作用 - 但如果它起作用,它真的很好。 )


作为这种屏幕截图的示例,以下man xdotool是 manpages.ubuntu.com上的示例,缩小到 20%(原始 1336x15653),使用xdotool解决方案完成:

man xdotool 20% 比例的整页截图,编辑为半高


Fir*_*ght 10

在 Firefox 中,您可以点击Shift-F2,然后在出现的命令行中,只需键入:

screenshot filename.png --fullpage
Run Code Online (Sandbox Code Playgroud)

还有更多可用的命令和选项