Machen Sie einen ganzseitigen Screenshot mit Firefox in der Befehlszeile

224

Ich verwende Firefox auf einem Xvfb in einem VPS. Ich möchte einen ganzseitigen Screenshot der Seite machen.

Ich kann Firefox mit auf eine bestimmte Seite umleiten

firefox http://google.com

und machen Sie mit ImageMagick einen Screenshot (in X)

import root -window output.jpg

Das Problem ist, dass der größte Teil der Seite gescrollt werden muss und ich die Höhe vorher nicht kennen kann.

Die andere Möglichkeit besteht darin, eine sehr große Höhe (z. B. 4000 Pixel) auszuwählen, das Bild zu verarbeiten und den unbrauchbaren Teil zu entfernen. Aber das ist unnötige Verarbeitung.

Ich habe viele Firefox-Add-Ons gefunden, suche aber nach einer Lösung, die über die Shell-Befehlszeile programmiert werden kann.

Bearbeiten: Ich habe dafür meine eigene FireFox-Erweiterung geschrieben .

Omar Abid
quelle
1
Ich habe einige Webkit-CLI-Tools zum Erstellen von Screenshots gesehen, aber ich erinnere mich nicht an die Namen.
Rufo El Magufo

Antworten:

480

Die Entwickler-Symbolleiste GCLI und die Verknüpfung Shift+ F2wurden in Firefox Version 60 entfernt . So machen Sie einen Screenshot in 60 oder neuer:

  • Drücken Sie Ctrl+ Shift+ K, um die Entwicklerkonsole zu öffnen ( ⌥ Option+ ⌘ Command+ Kunter macOS)
  • Typ :screenshotoder:screenshot --fullpage

Erfahren Sie mehr über Screenshots und andere Funktionen


Für Firefox-Versionen <60:

Drücken Sie Shift+ F2oder gehen Sie zu Tools> Web Developer> Developer Toolbar , um eine Befehlszeile zu öffnen. Schreiben:

screenshot

und drücken Sie die Eingabetaste , um einen Screenshot zu erstellen.

Um die Frage vollständig zu beantworten, können Sie sogar die gesamte Seite speichern, nicht nur den sichtbaren Teil davon:

screenshot --fullpage

Verwenden Sie die folgende --clipboardOption , um den Screenshot in die Zwischenablage zu kopieren :

screenshot --clipboard --fullpage

Firefox 18 ändert die Art und Weise, wie Argumente an Befehle übergeben werden. Sie müssen davor "-" hinzufügen.

Eine Dokumentation und die vollständige Liste der Befehle finden Sie hier .

PS. Die Screenshots werden standardmäßig im Download- Verzeichnis gespeichert .

enreas
quelle
4
Wenn Sie den Screenshot einfach direkt in Ihre Zwischenablage kopieren möchten, verwenden Sie den Screenshot --clipboard --fullpage
mbokil
2
Dieser Befehl funktioniert in einer Javascript-Konsole nicht. Gibt es also einen Link zu weiteren Informationen zu dieser Symbolleiste? Was kann es noch tun?
tremby
5
Nur zu Ihrer Information, Sie können auch DOM-Notizen über den Inspektor auswählen und dann right-click-> screenshot node. Dies ist sehr hilfreich, wenn Sie einen Screenshot eines Abschnitts einer Seite erstellen möchten.
Tom
5
Ganzseitiger Screenshot in die Zwischenablage - screenshot --clipboard --fullpageScreenshot eines bestimmten Knotens (nach screenshot --clipboard --selector #elementId
ID
3
Ich musste :screenshot --clipboard --fullpage(beachten Sie den Doppelpunkt)
irgendwann
134

Update 2018-07-23

Wie bereits in den Kommentaren erwähnt, ging es bei dieser Frage darum, einen Screenshot über die Befehlszeile zu erhalten . Entschuldigung, ich habe gerade darüber gelesen. Hier ist also die richtige Antwort:

Ab Firefox 57 können Sie einen Screenshot im Headless-Modus wie folgt erstellen:

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

Lesen Sie mehr in der Dokumentation .

Update 2017-06-15

Ab Firefox 55 gibt es Firefox-Screenshots als flexiblere Alternative. Ab Firefox 57 können Screenshots auch eine ganze Seite erfassen.

Ursprüngliche Antwort

Seit Firefox 32 gibt es in den Entwicklertools (F12) auch eine ganzseitige Screenshot-Schaltfläche . Wenn es nicht aktiviert ist, gehen Sie zu den Einstellungen der Entwicklertools (Schaltflächenschaltfläche) und wählen Sie im Abschnitt "Verfügbare Toolbox-Schaltflächen" die Option "Ganzseitigen Screenshot erstellen".

Symbolleiste für Entwicklertools Quelle: developer.mozilla.org

Standardmäßig werden die Screenshots im Download-Verzeichnis gespeichert. Dies funktioniert ähnlich wie screenshot --fullpagein der Symbolleiste.

Mouagip
quelle
7
Für diejenigen, die Firebug auf F12 öffnen, sind die Entwicklertools mit Strg + Umschalt + K oder Strg + Umschalt + I verfügbar. Nur ... für den Fall ... jemand hat sie noch nie benutzt.
Kir Kanos
Diese Tastaturkürzel funktionieren auf dem Mac nicht. Verwenden Sie Tools> Web Developer> Tools umschalten. Und ja, die Screenshot-Schaltfläche ist standardmäßig deaktiviert. Klicken Sie zum Aktivieren auf das Symbol Einstellungen.
Snowcrash
Auf dem Mac können Sie die Entwicklertools mit cmd+ alt+i
achairapart am
Firefox-Screenshots laden Screenshots hoch, die auf Mozillas Servern aufgenommen wurden. Sie haben dies nicht so offensichtlich gemacht, dass ich es im Voraus bemerken konnte. Glücklicherweise war das Bild in meinem Fall nicht zu empfindlich, obwohl es intern war. Sei gewarnt.
Hammer Bro.
1
Aus der Frage: "Ich habe viele Firefox-Add-Ons gefunden, suche aber nach einer Lösung, die über die Shell-Befehlszeile programmiert werden kann."
Quentin
9

Am Ende habe ich eine benutzerdefinierte Lösung (Firefox-Erweiterung) codiert, die dies tut. Ich denke, als ich es entwickelte, war die in enreas erwähnte Kommandozeile nicht da.

Die Firefox-Erweiterung lautet CmdShots . Dies ist eine gute Option, wenn Sie eine genauere Kontrolle über den Prozess der Aufnahme des Screenshots benötigen (oder wenn Sie einige HTML / JS-Änderungen und Bildverarbeitungen vornehmen möchten).

Sie können es verwenden und missbrauchen. Ich habe beschlossen, es nicht lizenziert zu lassen, damit Sie damit spielen können, wie Sie möchten.

Omar Abid
quelle
20
Hmm, das ist nicht das, was "nicht lizenziert" bedeutet: Es bedeutet tatsächlich, dass Sie keine Erlaubnis für eine Verwendung geben, was eindeutig nicht wahr ist, da Sie in diesem Satz auch sagen, dass es in Ordnung ist, es als Sie zu verwenden, zu missbrauchen und damit zu spielen wollen. Vielleicht möchten Sie so etwas wie die CC0 ?
SamB
Für diese "nicht lizenzierten" Dinge bevorzuge ich Folgendes : wtfpl.net Es wird klar angegeben, was ohne legale BS erlaubt ist.
Kap
@ SamB Ich bin zufällig auf deinen Kommentar gestoßen. Ja, ich weiß es 3 Jahre später. Das Problem ist, dass ich bereits komplizierte Dinge habe, wenn ich eine Lizenz schreibe. Der NOLICENSE-Ansatz besteht darin, einfach zu stopfen.
Omar Abid
3
Bitte Leute, verwenden Sie keine benutzerdefinierte Lizenz. Ich weiß, dass Menschen versuchen, rechtlichen Unsinn zu vermeiden, indem sie ihre eigene Lizenz schreiben, aber am Ende tun sie das Gegenteil und verursachen rechtliche Probleme für die Menschen, wenn sie herausfinden wollen, was die benutzerdefinierte Lizenz tatsächlich bedeutet. Siehe choosealicense.com
Flimm
@SamB - während „nicht lizenzierte“ ist nicht explizit eine „offizielle Lizenz“, „Die Lizenzierung für “ eigentlich ist eine Lizenz, und scheint ziemlich nahe zu sein , was die OP beschreibt , wie seine Absicht für die Benutzung seines Codes. Siehe: choosealicense.com/licenses/unlicense
Will Ediger
8

Ich denke, was Sie suchen, ist ein Dienstprogramm, mit dem Sie eine vollständige Seite, die in Ihrem Browser geöffnet wurde, in einer PNG-Datei speichern können. Höchstwahrscheinlich suchen Sie nach einem Dienstprogramm wie commandlineprint2 .

Nach der Installation der Erweiterung müssen Sie nur den folgenden Befehl eingeben:

firefox -print http://google.com -printfile ~/foo.png
Nehal J Wani
quelle
1

Firefox Screenshots ist ein neues Tool, das im Lieferumfang von Firefox enthalten ist. Es ist kein Entwicklertool, sondern richtet sich an Endbenutzer des Browsers.

Um einen Screenshot zu erstellen, klicken Sie in der Adressleiste auf das Menü mit den Seitenaktionen und dann auf "Screenshot erstellen". Wenn Sie dann auf "Ganze Seite speichern" klicken, wird die ganze Seite gespeichert und für Sie gescrollt.


(Quelle: mozilla.net )

Flimm
quelle
3
Aus der Frage: "Ich habe viele Firefox-Add-Ons gefunden, suche aber nach einer Lösung, die über die Shell-Befehlszeile programmiert werden kann."
Quentin
-1

Sie können Selen und den Webdriver für Firefox verwenden.

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