在命令行上使用Firefox获取整页屏幕截图

时间:2012-10-31 12:34:38

标签: shell firefox command-line screenshot

我在VPS中的Xvfb上运行Firefox。我想做的是拍一页整页的截图。

我可以使用

将Firefox重定向到特定页面
firefox http://google.com

使用ImageMagick

截取屏幕截图(在X中)
import root -window output.jpg

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

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

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

编辑:我最终编写了自己的FireFox extension来执行此操作。

6 个答案:

答案 0 :(得分:464)

Developer Toolbar GCLI and Shift+F2 shortcut were removed in Firefox version 60。截取60或更新的屏幕截图:

  • Ctrl + Shift + K 以打开开发人员控制台。
  • 输入:screenshot:screenshot --fullpage

Find out more regarding screenshots and other features


对于Firefox版本< 60:

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

screenshot

并按输入以截取屏幕截图。

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

screenshot --fullpage

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

screenshot --clipboard --fullpage

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

您可以找到一些文档和完整的命令列表here

<子> PS。屏幕截图默认保存在 downloads 目录中。

答案 1 :(得分:131)

更新2018-07-23

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

从Firefox 57开始,您可以在无头模式下创建屏幕截图,如下所示:

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

documentation中阅读更多内容。

更新2017-06-15

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

原始回答

自Firefox 32以来,开发人员工具中也有full page screenshot button(F12)。如果未启用,请转到开发人员工具设置(齿轮按钮)并选择&#34;获取完整的屏幕截图&#34;在&#34;可用的工具箱按钮&#34;部分。

developer tools toolbar 来源:developer.mozilla.org

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

答案 2 :(得分:9)

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

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

您可以使用它并滥用它。我决定保留它未经许可,所以你可以随心所欲地玩它。

答案 3 :(得分:7)

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

安装扩展程序后,只需输入命令:

firefox -print http://google.com -printfile ~/foo.png

答案 4 :(得分:1)

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

要获取屏幕截图,请点击地址栏中的页面操作菜单,然后点击“获取屏幕截图”。如果然后单击“保存整个页面”,它将保存整个页面,并为您滚动。

答案 5 :(得分:0)

您可以将selenium和网络驱动程序用于Firefox。

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')