当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

我看过How can I take a full page screenshot of a webpage from the command line?,里面提出了很多截屏的方法,但我需要使用firefox才能获得更好的效果。

最佳方法

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

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


“professional” 方式 – 使用网络浏览器 GUI-level 测试和自动化工具:

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

例如:

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

参见 so.SE: Screenshots using Selenium IDE Firefox plugin

要安装 Selenium 的 firefox 部分,请获取 firefox add-on – 但不是来自官方 add-ons 页面 – 它作为 xpi 文件位于 download page of Selenium 上。 This is the current version

(有很多 add-ons 用于扩展 selenium 本身(但在 firefox add-on 的技术中),在 Add-ons website 上都称为“Selenium …”甚至“Selenium IDE …” – 非常混乱。)


“hackish” 方式 – 通过键盘自动化使用内部 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 窗口交互。我们用它来选择显示页面的 firefox 窗口,并发送正确的击键来制作屏幕截图。

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


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

次佳方法

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

screenshot filename.png --fullpage

还有几个 more commands and options 可用。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13559.html,未经允许,请勿转载。