我在VPS的Xvfb上运行Firefox。我想做的是截取整个页面的截图。

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

firefox http://google.com

并使用ImageMagick截图(在X内)

import root -window output.jpg

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

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

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

编辑:我最终写了我自己的FireFox扩展来做这件事。


当前回答

你可以在Firefox中使用selenium和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')

其他回答

我最终编写了一个自定义解决方案(Firefox扩展)来实现这一点。我想在我开发它的时候,enreas中提到的命令行已经不存在了。

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

你可以利用它也可以滥用它。我决定不给它授权,所以你想怎么玩就怎么玩。

更新2018-07-23

正如刚才在评论中指出的,这个问题是关于从命令行获取屏幕截图的。抱歉,我刚看了一遍。下面是正确答案:

从Firefox 57开始,你可以在无头模式下创建如下截图:

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

在文档中阅读更多信息。

更新2017-06-15

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

原来的答案

自Firefox 32以来,在开发者工具(F12)中也有一个完整页面的截图按钮。如果未启用,转到开发人员工具设置(齿轮按钮),并在“可用工具箱按钮”部分选择“全页截图”。

来源:developer.mozilla.org

默认情况下,截图保存在下载目录中。这类似于截图——工具栏中的fullpage。

你可以在Firefox中使用selenium和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')

开发者工具栏GCLI和Shift+F2快捷键在Firefox 60版本中被移除。要在60或更新版本中截取截图:

按Ctrl+Shift+K打开开发人员控制台(macOS上的“选项+⌘命令+K”) 类型:截图或:截图—fullpage

了解更多关于截图和其他功能


对于Firefox版本< 60:

按Shift+F2或进入“工具> Web开发人员>开发人员工具栏”打开命令行。写:

screenshot

,按“Enter”,进行截图。

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

screenshot --fullpage

复制截图到剪贴板,使用——clipboard选项:

screenshot --clipboard --fullpage

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

Firefox 88.0提供了一种截屏的新方法。如果在about:config中extensions.screenshots.disabled设置为false,您可以右键单击屏幕并选择截图。还有一个截图菜单按钮,你可以自定义添加到你的菜单中。

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

PS.截图默认保存在下载目录下。

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

如果需要截图,右键单击页面上的空白处,选择“截图”。如果你点击“保存整页”,它会保存整页,为你滚动。

(来源:mozilla.net)