Bagaimana saya bisa menjalankan Firefox di Linux tanpa kepala (yaitu tanpa memerlukan libgtk-x11-2.0.so.0)?

17

Saya punya Dreamhost shared hosting, dan saya mencoba menjalankan Firefox 3.0 tanpa kepala untuk digunakan dengan Selenium.

Ketika saya mencoba menjalankannya ( ~/local/bin/firefox/firefox), saya mendapatkan pesan kesalahan berikut:

error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

Bagaimana saya bisa menjalankan Firefox di Linux tanpa memerlukan file objek bersama ini?

Paul D. Waite
sumber

Jawaban:

8

Saya tahu ini adalah pertanyaan yang agak lama, tetapi saya ingin menambahkan jawaban yang lebih baru karena saya diarahkan di sini oleh Google dan harus mencari beberapa saat untuk menemukan jawabannya.

Pada Firefox 57, Anda dapat menjalankan dalam mode tanpa kepala hanya dengan menginstal Firefox dan menjalankan:

firefox -headless http://test.com/

Lihat dokumentasi dev Firefox di sini.

Alaska Joseph
sumber
Luar biasa - terima kasih telah menambahkan jawaban yang mutakhir dan berkualitas tinggi; itulah tepatnya yang dirancang untuk Stack Exchange.
Paul D. Waite
14

Anda tidak dapat menjalankan Firefox tanpa semua pustaka Gtk yang diperlukan, tetapi itu mudah diselesaikan dengan menginstal pustaka. Biasanya Anda akan menginstal Firefox melalui sistem manajemen paket dan ini akan menarik semua perpustakaan yang diperlukan.

Untuk menjalankan Firefox secara normal, Anda memerlukan server X (itulah bagian yang menampilkan jendela dan isinya, berbeda dengan hal-hal seperti Gtk yang merupakan pustaka yang digunakan aplikasi untuk membangun konten). Itu adalah sesuatu yang biasanya tidak Anda jalankan di server. Ada beberapa hal yang dapat Anda lakukan di Firefox tanpa server X, saya tidak tahu apakah Selenium adalah salah satunya.

Untuk menjalankan Firefox di server Anda, jalankan server X "virtual". Sebuah sederhana adalah Xvfb ( v irtual f rame b uffer X server). Ada dalam distribusi server X.org . Penggunaan sampel:

Xvfb :19 -screen 0 1024x768x16 &
export DISPLAY=:19
firefox &
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Bagus sekali, tepuk tangan Gilles, itu berhasil. Saya juga menemukan artikel ini bermanfaat untuk menjalankan Xvfb: alittlemadness.com/2008/03/05/running-selenium-headless , dan blog.kabisa.nl/2010/05/24/…
Paul D. Waite
7

Kamu tidak bisa; itu terkait dengan pustaka klien X dan Gtk +, dan saya tidak berpikir itu mungkin untuk membangunnya tanpa mereka.

Bahkan dalam versi tanpa kepala Firefox, GTK + masih diperlukan .

geekosaurus
sumber
2

Karena Selenium adalah alat pengujian GUI, saya merasa sulit untuk percaya bahwa itu dapat bekerja tanpa X.

Jadi tebakan terbaik saya adalah server tanpa kepala Anda membutuhkan instalasi X seperti yang disarankan oleh Gilles. Ada sejumlah alternatif serupa.

pindahkan
sumber
2

Kamu bisa

  • menggunakan Firefox di framebuffer virtual: xvfb-run -a firefox
  • gunakan SlimerJS (mesin Gecko / rendering tertanam dari Firefox) dengan xcfb,
  • gunakan PhantomJS sebagai embedded WebKit tanpa perlu tampilan dan dukungan selenium via GhostDriver - jika WebKit tidak masalah untuk Anda.
flob
sumber
Saya pikir maksud Anda 'xvfb-run -a ...' dan bukan xvfb, bukan?
Kutzi
Terima kasih :-) Mungkin itu berubah sementara itu?
flob