233

我在 VPS 的 Xvfb 上运行 Firefox。我想要做的是对页面进行整页截图。

我可以使用重定向 Firefox 到特定页面

firefox http://google.com

并使用 ImageMagick 截取屏幕截图(在 X 内)

import root -window output.jpg

问题是,大部分页面都需要滚动,我无法事先知道高度。

另一种方法是选择一个非常大的高度(如 4000px),然后处理图像并删除无用的部分。但这是不必要的处理。

我发现了许多 Firefox 附加组件,但我正在寻找一种可以使用 Shell 命令行进行编程的解决方案。

编辑:我最终为此编写了自己的FireFox 扩展。

4

6 回答 6

491

开发者工具栏 GCLI 和Shift+F2快捷方式在 Firefox 版本 60 中被删除。要以 60 或更高版本截取屏幕截图:

  • Ctrl+ Shift+K打开开发者控制台(macOS 上的⌥ Option+ ⌘ Command+ )K
  • 输入:screenshot:screenshot --fullpage

了解有关屏幕截图和其他功能的更多信息


对于 < 60 的 Firefox 版本:

Shift+F2或转到工具 > Web 开发人员 > 开发人员工具栏以打开命令行。写:

screenshot

并按Enter以截取屏幕截图。

要完全回答这个问题,您甚至可以保存整个页面,而不仅仅是它的可见部分:

screenshot --fullpage

并将屏幕截图复制到剪贴板,使用--clipboard选项:

screenshot --clipboard --fullpage

Firefox 18更改了将参数传递给命令的方式,您必须在它们之前添加“--”。

Firefox 88.0有一种新的截屏方法。如果在about:configextensions.screenshots.disabled中设置为,您可以右键单击屏幕并选择Take Screenshot。还有一个屏幕截图菜单按钮,您可以通过自定义将其添加到菜单中。false

您可以在此处找到一些文档和完整的命令列表。

PS。屏幕截图默认保存在下载目录中。

于 2013-02-12T10:22:16.980 回答
140

2018-07-23 更新

正如评论中刚刚指出的那样,这个问题是关于从命令行获取屏幕截图。对不起,我刚刚读了一遍。所以这里是正确的答案:

从 Firefox 57 开始,您可以像这样以无头模式创建屏幕截图:

firefox -screenshot https://developer.mozilla.com

在文档中阅读更多内容。

2017-06-15 更新

从 Firefox 55 开始,Firefox Screenshots作为更灵活的选择。从 Firefox 57 开始,屏幕截图也可以捕获整页。

原始答案

从 Firefox 32 开始,开发者工具 (F12) 中还有一个全页截图按钮。如果未启用,请转到开发人员工具设置(齿轮按钮)并在“可用工具箱按钮”部分选择“获取整页截图”。

开发者工具工具栏 来源:developer.mozilla.org

默认情况下,屏幕截图保存在下载目录中。这与工具栏中的类似screenshot --fullpage

于 2014-09-02T19:05:37.700 回答
9

我最终编写了一个自定义解决方案(Firefox 扩展)来执行此操作。我想当我开发它时,enreas 中提到的命令行并不存在。

Firefox 扩展是CmdShots。如果您需要更好地控制截屏过程(或者您想要进行一些 HTML/JS 修改和图像处理),这是一个不错的选择。

你可以使用它并滥用它。我决定保持它未经许可,因此您可以随意使用它。

于 2013-02-15T20:59:09.700 回答
8

我认为您正在寻找的是一个实用程序,它使您能够将在浏览器中打开的完整页面保存到 png 文件中。您很可能正在寻找像commandlineprint2这样的实用程序。

安装扩展后,您只需要键入命令:

firefox -print http://google.com -printfile ~/foo.png
于 2012-10-31T19:56:59.273 回答
3

Firefox Screenshots是 Firefox 附带的一个新工具。它不是开发者工具,它是针对浏览器的最终用户的。

要截屏,请右键单击页面上的空白区域,然后选择“截屏”。如果您然后单击“保存整页”,它将保存整页,为您滚动。

(来源:Mozilla.net

于 2018-07-23T09:20:45.110 回答
0

您可以使用 selenium 和 Firefox 的 webdriver。

import selenium.webdriver
import selenium.common

options = selenium.webdriver.firefox.options.Options()
# options.headless = True
with selenium.webdriver.Firefox(options=options) as driver:
    driver.get('http://google.com')
    time.sleep(2)
    root=driver.find_element_by_tag_name('html')
    root.screenshot('whole page screenshot.png')
于 2020-04-29T01:16:47.793 回答