Сделайте полный снимок экрана с Firefox в командной строке


224

Я использую Firefox на Xvfb в VPS. То, что я хочу сделать, это сделать полный снимок экрана страницы.

Я могу перенаправить Firefox на определенную страницу, используя

firefox http://google.com

и сделайте скриншот (внутри X), используя ImageMagick

import root -window output.jpg

Проблема в том, что большую часть страницы нужно прокручивать, и я не могу знать высоту заранее.

Другой способ - выбрать очень большую высоту (например, 4000 пикселей), а затем обработать изображение и удалить ненужную часть. Но это ненужная обработка.

Я нашел много дополнений Firefox, но я ищу решение, которое можно запрограммировать с помощью командной строки Shell.

Изменить: я закончил писать свое собственное расширение FireFox для этого.


1
Я видел некоторые инструменты webkit cli для создания скриншотов, но я не помню названий.
Руфо Эль Магуфо

Ответы:


480

Панель инструментов разработчика GCLI и Shift+ F2ярлык были удалены в Firefox версии 60 . Чтобы сделать снимок экрана в 60 или более поздней версии:

  • нажмите Ctrl+ Shift+, Kчтобы открыть консоль разработчика ( ⌥ Option+ ⌘ Command+K в macOS)
  • тип :screenshotили:screenshot --fullpage

Узнайте больше о скриншотах и ​​других функциях


Для версий Firefox <60:

Нажмите Shift+ F2или перейдите в Инструменты> Веб-разработчик> Панель инструментов разработчика, чтобы открыть командную строку. Напишите:

screenshot

и нажмите Enter , чтобы сделать снимок экрана.

Чтобы полностью ответить на вопрос, вы можете даже сохранить всю страницу, а не только ее видимую часть:

screenshot --fullpage

И чтобы скопировать скриншот в буфер обмена, используйте --clipboardопцию:

screenshot --clipboard --fullpage

Firefox 18 изменяет способ передачи аргументов командам, вы должны добавить «-» перед ними.

Вы можете найти некоторую документацию и полный список команд здесь .

PS. Скриншоты по умолчанию сохраняются в каталоге загрузок .


4
Если вы хотите просто скопировать снимок экрана в буфер обмена, используйте снимок экрана --clipboard --fullpage
mbokil

2
Эта команда не работает в консоли javascript, так есть ли ссылка на дополнительную информацию об этой панели инструментов? Что еще это может сделать?
Тремби

5
Просто к вашему сведению вы также можете выбрать DOM заметки через инспектора, а затем right-click-> screenshot node. Это очень полезно, когда вы хотите сделать скриншот раздела страницы.
Том

5
Скриншот полной страницы в буфер обмена - screenshot --clipboard --fullpageСкриншот определенного узла (по идентификатору) -screenshot --clipboard --selector #elementId
Mohnish

3
Я должен был использовать :screenshot --clipboard --fullpage(
обратите

134

Обновление 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

По умолчанию скриншоты сохраняются в каталоге загрузки. Это работает так же, как screenshot --fullpageна панели инструментов.


7
Для тех, кто открывает Firebug на F12, инструменты разработчика доступны с Ctrl + Shift + K или Ctrl + Shift + I. Просто ... на всякий случай ... кто-то никогда не использовал их раньше.
Кир Канос

Эти сочетания клавиш не работают на Mac. Используйте Инструменты> Веб-разработчик> Инструменты переключения. И, да, кнопка экрана будет отключена по умолчанию. Нажмите значок Настройки, чтобы включить.
Snowcrash

на Mac вы можете открыть инструменты разработчика с cmd+ alt+i
achairapart

Firefox Screenshots загружает скриншоты, сделанные на серверах Mozilla. Они не сделали это настолько смешным, чтобы я мог заметить заранее. К счастью, изображение в моем случае не было слишком чувствительным, хотя и было внутренним. Имейте в виду.
Хаммер Бро.

1
Из вопроса: «Я нашел много дополнений Firefox, но я ищу решение, которое можно запрограммировать с помощью командной строки Shell».
Квентин

9

В итоге я написал собственное решение (расширение Firefox), которое делает это. Я думаю, что к тому времени, когда я его разработал, командной строки, упомянутой в enreas, уже не было.

Расширение Firefox - CmdShots . Это хороший вариант, если вам нужен более точный контроль над процессом создания снимка экрана (или вы хотите внести некоторые изменения в HTML / JS и обработку изображений).

Вы можете использовать это и злоупотреблять этим. Я решил оставить его без лицензии, поэтому вы можете играть с ним как хотите.


20
Хм, это не то, что означает «нелицензированный»: на самом деле это означает, что вы не даете никакого разрешения на какое-либо использование, что явно не соответствует действительности, поскольку в этом же предложении вы также говорите, что можно использовать, ругать и играть с ним, как вы. хотеть. Возможно, вы хотите что-то вроде CC0 ?
SamB

Для тех «нелицензированных» вещей я предпочитаю это: wtfpl.net В нем четко указано, что разрешено без легальной БС.
кап

@SamB Я случайно наткнулся на ваш комментарий. Да, я знаю, 3 года спустя. Проблема в том, что если я пишу лицензию, я уже усложняю вещи. Подход NOLICENSE - просто набивать вещи.
Омар Абид

3
Пожалуйста, люди, не используйте пользовательскую лицензию. Я знаю, что люди пытаются избежать юридической чепухи, написав свою собственную лицензию, но в итоге они делают обратное, вызывая легальные головные боли у людей, когда они пытаются выяснить, что на самом деле означает обычная лицензия. См. Choosealicense.com
Flimm

@SamB - хотя «нелицензированный» явно не является «официальной лицензией», «Unlicense» на самом деле является лицензией и, похоже, довольно близок к тому, что ОП описывает как свое намерение использовать свой код. Смотрите: choosealicense.com/licenses/unlicense
Уилл Эдигер

8

Я думаю, что вы ищете утилиту, которая позволяет вам сохранить полную страницу, открытую в вашем браузере, в файл png. Скорее всего, вы ищете такую ​​утилиту, как commandlineprint2 .

После установки расширения вам просто нужно набрать команду:

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

1

Firefox Скриншоты - это новый инструмент, который поставляется с Firefox. Это не инструмент для разработчиков, он предназначен для конечных пользователей браузера.

Чтобы сделать снимок экрана, щелкните меню действий на странице в адресной строке и нажмите «сделать снимок экрана». Если вы затем нажмете «Сохранить полную страницу», она сохранит всю страницу, прокручивая для вас.


(источник: mozilla.net )


3
Из вопроса: «Я нашел много дополнений Firefox, но я ищу решение, которое можно запрограммировать с помощью командной строки Shell».
Квентин

-1

Вы можете использовать селен и веб-драйвер для 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')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.