Ambil tangkapan layar satu halaman penuh dengan Firefox di baris perintah

224

Saya menjalankan Firefox pada Xvfb di VPS. Yang ingin saya lakukan adalah mengambil tangkapan layar satu halaman penuh dari halaman tersebut.

Saya dapat mengarahkan Firefox ke halaman tertentu menggunakan

firefox http://google.com

dan ambil tangkapan layar (di dalam X) menggunakan ImageMagick

import root -window output.jpg

Masalahnya adalah, sebagian besar halaman perlu digulir dan saya tidak bisa mengetahui ketinggiannya sebelumnya.

Cara lain adalah dengan memilih ketinggian yang sangat besar (seperti 4000px) dan kemudian memproses gambar dan menghapus bagian yang tidak berguna. Tapi itu tidak perlu diproses.

Saya menemukan banyak add-on Firefox, tetapi saya sedang mencari solusi yang dapat diprogram menggunakan baris Perintah Shell.

Sunting: Saya akhirnya menulis ekstensi FireFox saya sendiri untuk melakukan ini.

Omar Abid
sumber
1
Saya telah melihat beberapa alat webkit cli untuk mengambil tangkapan layar tapi saya tidak ingat namanya.
Rufo El Magufo

Jawaban:

480

The Developer Toolbar GCLI dan Shift+ F2pintas telah dihapus di Firefox versi 60 . Untuk mengambil tangkapan layar dalam 60 atau lebih baru:

  • tekan Ctrl+ Shift+ Kuntuk membuka konsol pengembang ( ⌥ Option+ ⌘ Command+ Kdi macOS)
  • ketik :screenshotatau:screenshot --fullpage

Cari tahu lebih lanjut tentang tangkapan layar dan fitur lainnya


Untuk versi Firefox <60:

Tekan Shift+ F2atau buka Alat> Pengembang Web> Bilah Alat Pengembang untuk membuka baris perintah. Menulis:

screenshot

dan tekan Enter untuk mengambil tangkapan layar.

Untuk sepenuhnya menjawab pertanyaan, Anda bahkan dapat menyimpan seluruh halaman, tidak hanya bagian yang terlihat:

screenshot --fullpage

Dan untuk menyalin screenshot ke clipboard, gunakan --clipboardopsi:

screenshot --clipboard --fullpage

Firefox 18 mengubah cara argumen dilewatkan ke perintah, Anda harus menambahkan "-" sebelum mereka.

Anda dapat menemukan beberapa dokumentasi dan daftar lengkap perintah di sini .

PS. Tangkapan layar disimpan ke direktori unduhan secara default.

enreas
sumber
4
Jika Anda hanya ingin menyalin tangkapan layar ke papan klip Anda langsung menggunakan tangkapan layar --clipboard --fullpage
mbokil
2
Perintah itu tidak berfungsi di konsol javascript, jadi apakah ada tautan ke informasi lebih lanjut tentang toolbar ini? Apa lagi yang bisa dilakukan?
gemetar
5
Hanya FYI Anda juga dapat memilih catatan DOM melalui inspektur dan kemudian right-click-> screenshot node. Ini sangat membantu ketika Anda ingin screenshot bagian halaman.
Tom
5
Tangkapan layar halaman penuh ke clipboard - screenshot --clipboard --fullpageTangkapan layar simpul tertentu (berdasarkan ID) -screenshot --clipboard --selector #elementId
Mohnish
3
Saya harus menggunakan :screenshot --clipboard --fullpage(mind the colon)
someonr
134

Perbarui 2018-07-23

Seperti yang baru saja ditunjukkan di komentar, pertanyaan ini adalah tentang mendapatkan tangkapan layar dari baris perintah . Maaf, saya baru saja membacanya. Jadi, inilah jawaban yang benar:

Pada Firefox 57 Anda dapat membuat tangkapan layar dalam mode tanpa kepala seperti ini:

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

Baca lebih lanjut di dokumentasi .

Perbarui 2017-06-15

Pada Firefox 55 ada Firefox Screenshot sebagai alternatif yang lebih fleksibel. Pada Firefox 57 Screenshot dapat menangkap satu halaman penuh juga.

Jawaban asli

Sejak Firefox 32 ada juga tombol screenshot halaman penuh di alat pengembang (F12). Jika tidak diaktifkan, buka pengaturan alat pengembang (tombol roda gigi) dan pilih "Ambil tangkapan layar halaman penuh" di bagian "Tombol Kotak Alat yang Tersedia".

toolbar alat pengembang sumber: developer.mozilla.org

Secara default tangkapan layar disimpan di direktori unduhan. Ini berfungsi mirip dengan screenshot --fullpagedi toolbar.

Mouagip
sumber
7
Bagi mereka yang membuka Firebug di F12, alat pengembang tersedia dengan Ctrl + Shift + K atau Ctrl + Shift + I. Hanya ... seandainya ... seseorang tidak pernah menggunakannya sebelumnya.
Kir Kanos
Pintasan keyboard itu tidak berfungsi di Mac. Gunakan Alat> Pengembang Web> Alat Toggle. Dan, ya, tombol screenshot yang dinonaktifkan secara default. Klik ikon Pengaturan untuk mengaktifkan.
Snowcrash
di Mac, Anda dapat membuka alat pengembang dengan cmd+ alt+i
achairapart
Firefox Screenshot mengunggah tangkapan layar yang diambil ke server Mozilla. Mereka tidak membuat ini cukup obyektif untuk saya perhatikan sebelumnya. Untungnya gambar dalam kasus saya tidak terlalu sensitif, meskipun itu internal. Diperingatkan.
Hammer Bro.
1
Dari pertanyaan: "Saya menemukan banyak add-on Firefox, tetapi saya sedang mencari solusi yang dapat diprogram menggunakan baris Perintah Shell."
Quentin
9

Saya akhirnya coding solusi kustom (ekstensi Firefox) yang melakukan ini. Saya pikir pada saat saya mengembangkannya, baris perintah yang disebutkan dalam enreas tidak ada di sana.

Ekstensi Firefox adalah CmdShots . Ini adalah pilihan yang baik jika Anda memerlukan tingkat kontrol yang lebih baik atas proses pengambilan tangkapan layar (atau Anda ingin melakukan beberapa modifikasi HTML / JS dan pemrosesan gambar).

Anda dapat menggunakannya dan menyalahgunakannya. Saya memutuskan untuk mempertahankannya tanpa izin, jadi Anda bebas bermain sesuai keinginan Anda.

Omar Abid
sumber
20
Hmm, bukan itu yang dimaksud dengan "tidak berlisensi": itu sebenarnya berarti Anda tidak memberikan izin apa pun untuk penggunaan apa pun, yang jelas tidak benar karena dalam kalimat itu Anda juga mengatakan tidak apa-apa untuk menggunakan, menyalahgunakan, dan bermain dengannya saat Anda ingin. Mungkin Anda menginginkan sesuatu seperti CC0 ?
SamB
Untuk hal-hal yang "tidak berlisensi", saya lebih suka ini: wtfpl.net Ini dengan jelas menyatakan apa yang diizinkan tanpa BS hukum.
kap
@ Sam Saya secara acak tersandung pada komentar Anda. Ya, saya tahu 3 tahun kemudian. Masalahnya adalah jika saya menulis Lisensi, saya sudah rumit. Pendekatan NOLICENSE adalah dengan sederhana.
Omar Abid
3
Tolong teman-teman, jangan gunakan lisensi khusus. Saya tahu orang-orang mencoba menghindari omong kosong hukum dengan menulis lisensi mereka sendiri, tetapi mereka akhirnya melakukan yang sebaliknya, menyebabkan sakit kepala hukum bagi orang-orang ketika mereka mencoba untuk mencari tahu apa sebenarnya arti lisensi kustom. Lihat selectalicense.com
Flimm
@ SamB - sementara "tidak berlisensi" tidak secara eksplisit merupakan "lisensi resmi", "The Unlicense" sebenarnya adalah lisensi, dan tampaknya cukup dekat dengan apa yang OP jelaskan sebagai maksudnya untuk penggunaan kodenya. Lihat: choosealicense.com/licenses/unlicense
Will Ediger
8

Saya pikir apa yang Anda cari adalah utilitas yang memungkinkan Anda untuk menyimpan halaman lengkap yang dibuka di browser Anda ke file png. Kemungkinan besar Anda mencari utilitas seperti commandlineprint2 .

Setelah menginstal ekstensi, Anda hanya perlu mengetikkan perintah:

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

Firefox Screenshot adalah alat baru yang disertakan dengan Firefox. Ini bukan alat pengembang, ini ditujukan untuk pengguna akhir browser.

Untuk mengambil tangkapan layar, klik menu tindakan halaman di bilah alamat, dan klik "ambil tangkapan layar". Jika Anda kemudian klik "Simpan halaman penuh", itu akan menyimpan halaman penuh, gulir untuk Anda.


(sumber: mozilla.net )

Flimm
sumber
3
Dari pertanyaan: "Saya menemukan banyak add-on Firefox, tetapi saya sedang mencari solusi yang dapat diprogram menggunakan baris Perintah Shell."
Quentin
-1

Anda dapat menggunakan selenium dan webdriver untuk 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')
Gqqnbig
sumber