Eu tenho a hospedagem compartilhada do Dreamhost e estou tentando executar o Firefox 3.0 sem comando para usar com o Selenium.
Quando tento executá-lo (~/local/bin/firefox/firefox
), recebo a seguinte mensagem de erro:
error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
Como posso executa o Firefox no Linux sem exigir este arquivo de objeto compartilhado?
Resposta
Eu sei que esta é uma pergunta bastante antiga, mas eu queria para adicionar uma resposta mais recente conforme fui instruído aqui pelo Google e tive que pesquisar um pouco para encontrar a resposta.
A partir do Firefox 57, você pode rodar no modo headless simplesmente instalando o Firefox e executando:
firefox -headless http://test.com/
Veja os documentos de desenvolvimento do Firefox aqui.
Comentários
- Por favor, note que nas primeiras versões, o modo headless do Firefox ainda neded GTK3 instalado. Este problema está resolvido agora, pelo que eu sei.
Resposta
Você não pode “executar o Firefox sem todas as bibliotecas Gtk que ele requer, mas isso é facilmente resolvido instalando as bibliotecas. Normalmente, você instalaria o Firefox por meio de um sistema de gerenciamento de pacotes e isso puxaria todas as bibliotecas necessárias.
Para executar o Firefox normalmente, você precisa de um servidor X (essa é a parte que exibe as janelas e seus conteúdos, ao contrário de coisas como Gtk que são bibliotecas que o aplicativo usa para construir o conteúdo). Isso é algo que você normalmente não executaria em um servidor. Existem muito poucas coisas que você pode fazer no Firefox sem um servidor X, eu não sei se Selenium é uma delas.
Para executar o Firefox em seu servidor, execute um servidor X “virtual”. Um simples é o Xvfb ( v irtual f rame b uffer X servidor). Está na distribuição do servidor X.org . Exemplo de uso:
Xvfb :19 -screen 0 1024x768x16 & export DISPLAY=:19 firefox &
Comentários
- Excelente, alegre Gilles, acabou. Também achei esses artigos úteis para colocar o Xvfb em execução: alittlemadness.com / 2008/03/05 / running-selenium-headless e blog.kabisa.nl/2010/05/24/…
Resposta
Você não pode “t; ele está vinculado às bibliotecas cliente X e Gtk +, e não acho que seja possível construí-lo sem elas.
Mesmo na versão headless do Firefox, GTK + ainda é necessário .
Resposta
Visto que Selenium é uma ferramenta de teste de GUI, eu faria acho difícil acreditar que ele pode funcionar sem o X.
Então, meu melhor palpite é que seu servidor headless requer uma instalação do X, como a sugerida por Gilles. Existem várias alternativas semelhantes.
Resposta
Você pode
- usar um Firefox em um framebuffer virtual:
xvfb-run -a firefox
- use SlimerJS (um motor de renderização / Gecko incorporado de Firefox) com xcfb,
- use PhantomJS como WebKit incorporado sem a necessidade de um display e suporte de selênio via GhostDriver – se o WebKit for adequado para você.
Comentários
- Acho que você quer dizer ' xvfb-run -a … ' e não xvfb, certo?
- Obrigado 🙂 Talvez seja mudou entretanto?