Jeg har Dreamhost delt hosting, og jeg prøver å kjøre Firefox 3.0 på den hodeløst for bruk med Selenium.

Når jeg prøver å kjøre den (~/local/bin/firefox/firefox), får jeg følgende feilmelding:

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

Hvordan kan jeg kjøre Firefox på Linux uten å kreve denne delte objektfilen?

Svar

Jeg vet at dette er et ganske gammelt spørsmål, men jeg ville for å legge til et nyere svar ettersom jeg ble instruert her av Google og måtte søke en stund for å finne svaret.

Fra og med Firefox 57 kan du kjøre i hodeløs modus ganske enkelt ved å installere Firefox og kjøre:

firefox -headless http://test.com/ 

Se Firefox-dokumentene her.

Kommentarer

  • Vær oppmerksom på at Firefox-hodeløs modus fortsatt nedkjørte GTK3 installert på første utgivelser. Dette problemet er løst så vidt jeg vet.

Svar

Du kan ikke kjøre Firefox uten alle Gtk-bibliotekene krever det, men det løses enkelt ved å installere bibliotekene. Normalt vil du installere Firefox gjennom et pakkehåndteringssystem, og dette vil trekke inn alle nødvendige biblioteker.

For å kjøre Firefox normalt, trenger du en X-server (som er delen som viser vinduene og innholdet, i motsetning til ting som Gtk som er biblioteker som applikasjonen bruker til å bygge innholdet). Det er noe du vanligvis ikke vil kjøre på en server. Det er veldig få ting du kan gjøre i Firefox uten en X-server. Jeg vet ikke om Selen er en av dem.

For å kjøre Firefox på serveren din, kjør en «virtuell» X-server. En enkel er Xvfb ( v irtual f rame b uffer X server). Det er i X.org-serverdistribusjon . Eksempel på bruk:

Xvfb :19 -screen 0 1024x768x16 & export DISPLAY=:19 firefox & 

Kommentarer

Svar

Du kan ikke; den er knyttet til X- og Gtk + -klientbiblioteket, og jeg tror ikke det er mulig å bygge den uten dem.

Selv i Firefox-hodeløs versjon, GTK + trengs fremdeles .

Svar

Siden Selen er et GUI-testverktøy, vil jeg synes det er vanskelig å tro at det kan fungere uten X.

Så det beste gjettet mitt er at den hodeløse serveren din krever en X-installasjon som den som Gilles foreslo. Det finnes en rekke lignende alternativer.

Svar

Du kan

  • bruke en Firefox i en virtuell framebuffer: xvfb-run -a firefox
  • bruk SlimerJS (en innebygd Gecko / gjengivelsesmotor fra Firefox) med xcfb,
  • bruk PhantomJS som innebygd WebKit uten behov for skjerm og selenstøtte via GhostDriver – hvis WebKit er OK for deg.

Kommentarer

  • Jeg tror du mener ' xvfb-run -a … ' og ikke xvfb, ikke sant?
  • Takk 🙂 Kanskje det endret i mellomtiden?

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *