Estamos considerando atualizar nosso servidor de produção do Ubuntu- desktop 10.04 para o Ubuntu- server 12.04.
Temos vários serviços em execução em nosso sistema operacional de desktop atual, como Selenium Web Driver. Minha pergunta é: o Selenium Web Driver pode ser executado a partir de um sistema baseado em CLI?
Meu pensamento imediato é que não pode, porque depende do Firefox, mas gostaria que alguém provasse que estou errado!
Respostas:
O que você está procurando é um navegador sem cabeça.
Sim, é possível executar o Selenium no Firefox sem controle. Aqui está uma postagem que você pode seguir.
Aqui está o resumo das etapas para configurar o Xvfb
fonte
Xvfb
, não para instalar e configurar o Selenium (o que requer tergeckodriver
no caminho).subprocess.Popen('Xvfb...')
ouos.system('Xvfb...')
, mas certifique-se de fazer isso antes de importar o driver da web.O Chrome agora tem um modo sem cabeça:
fonte
Sim. Você pode usar
HTMLUnitDriver
paraFirefoxDriver
ao iniciar o webdriver. Esta é a configuração do navegador sem cabeça. Os detalhes podem ser encontrados aqui .fonte
Se você deseja suporte para navegador sem interface, então há outra abordagem que você pode adotar.
https://github.com/detro/ghostdriver
Foi anunciado durante a Conferência Selenium e ainda está em desenvolvimento. Ele usa o PhantomJS como navegador e é muito melhor que o HTMLUnitDriver, ainda não há screenshots, mas ainda está em desenvolvimento ativo.
fonte
Um opcional é usar
pyvirtualdisplay
assim:Uma versão mais curta é:
Geralmente é um encapsulado de python
xvfb
e, de alguma forma, mais conveniente.A propósito, embora
PhantomJS
seja um navegador sem interface e nenhuma janela será aberta se você usá-lo, parece quePhantomJS
ainda precisa de um ambiente gui para funcionar.Recebi o código de erro -6 quando uso em
PhantomJS()
vez deFirefox()
no modo sem cabeça (console conectado à massa). Porém está tudo ok no ambiente de trabalho.fonte
ATUALIZAÇÃO: Você não precisa mais do XVFB para rodar o Firefox sem cabeça. Firefox v55 + no Linux e Firefox v56 + no Windows / Mac agora oferece suporte à execução sem comando.
Eu adicionei alguma documentação de como usar aqui:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
fonte
Outra opção é o GhostDriver, que agora é oficialmente compatível com WebDriver: ganho de desempenho real do Ghostdriver
fonte
Esteja ciente de que o webclient HtmlUnitDriver é de thread único e o Ghostdriver possui apenas 40% das funcionalidades para ser um WebDriver.
No entanto, o Ghostdriver foi executado corretamente para os testes e tenho problemas para conectá-lo ao hub WebDriver.
fonte
Sim, você pode executar scripts de teste sem um navegador, mas você deve executá-los no modo headless.
fonte
talvez você precise definir a dimensão do tamanho da janela. Assim como:
se também não estiver funcionando, tente aumentar a dimensão do tamanho da janela.
fonte
Instale e execute o Firefox em contêiner:
Conecte usando
webdriver.Remote
:fonte