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

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

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

我见过如何从命令行截取网页的整页截图?其中提出了许多截屏的方法,但我需要使用 Firefox 才能获得更好的效果。

答案1

制作截图网页显示整个可滚动区域在 Firefox 中,我建议两个独立的方法。

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


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

自动化工具- 通常用于 UI 测试 - 可以进行全页面截图;
似乎一些开销但是只是为了这个任务而进行设置。

例如:

Command: open; Target: http://www.google.com
Command: captureEntirePageScreenshotAndWait; Target: \\Screenshots\\test.png

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

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

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


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

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

我们需要选择一个浏览器窗口,打开提示符,输入 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

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

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


作为此类截图的示例,以下是man xdotool在 manpages.ubuntu.com 上,缩小到20%(原始1336x15653),解决xdotool方案如下:

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

答案2

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

screenshot filename.png --fullpage

有几个更多命令和选项也可用。

答案3

您可以从 Firefox 中拍摄视频。使用以下命令:

mkdir ~/my_video
cd ~/my_video
avconv  -an  -f x11grab -r 30 -s 1024x768 -i :0.0+10,20  -vcodec libx264  -preset ultrafast -threads 0 video.mkv

您可能需要修改尺寸(1024x768)和位置(:0.0+10,20)以满足您的需要。

获得视频后,您可以使用 mplayer 将其转换为一堆 .png 文件:

mplayer video.mkv -vo png

然后选择最适合您需要的图像。

相关内容