Estou usando o Selenium RC para automatizar algumas operações do navegador, mas quero que o navegador fique invisível. Isso é possível? Quão? E quanto ao Selenium Grid? Posso ocultar a janela Selenium RC também?
python
selenium
selenium-rc
Yatendra Goel
fonte
fonte
Respostas:
Existem algumas opções:
Você pode usar o Selenium Grid para que o navegador seja aberto em uma máquina completamente diferente (ou máquina virtual), à qual você pode se conectar via VNC ou Conexão de Área de Trabalho Remota, se quiser ver o navegador. Além disso, outra opção: se você executar um processo de primeiro plano do Jenkins nesse servidor remoto, ele poderá executar seu projeto de teste na área de trabalho.
Você pode executar o Selenium 'headless' no Linux no XVFB. Nunca tentei fazer isso e duvido que realmente valha o esforço. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
Você pode envolver o Selenium RC em um serviço do Windows. http://support.microsoft.com/kb/137890 . Exceto que as restrições de permissões em versões posteriores do Windows provavelmente impedirão o Selenium de acessar a área de trabalho como o Windows 2000 costumava nos permitir fazer.
Outra opção seria usar algo como WebDriver HTMLUnitDriver, que não inicia um navegador 'real'. http://code.google.com/p/webdriver/ . Também existe uma opção PhantomJS, bem como um 'Chrome headless' que você pode usar.
É claro que também existe a opção de usar um serviço como o SauceLabs, onde você pode fazer com que seus testes sejam executados na nuvem. Após a conclusão dos testes, você pode assistir a um vídeo deles em execução.
fonte
No Linux, você pode executar o WebDriver em uma tela sem cabeça (virtual) para ocultar o navegador. Isso pode ser feito com o Xvfb (X framebuffer virtual).
Você pode controlar o Xvfb diretamente do código Python usando
xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapperO código Python para execução sem comando ficaria assim:
Instale dependências no Debian / Ubuntu:
fonte
Eu facilmente consegui esconder a janela do navegador.
Basta instalar o PhantomJS . Então, mude esta linha:
para:
O resto do seu código não precisará ser alterado e nenhum navegador será aberto. Para fins de depuração, use
driver.save_screenshot('screen.png')
em diferentes etapas do seu código.fonte
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
1 para Selenium RC como um serviço do Windows.
Por ter os testes rodando totalmente escondidos, acho que você não tem muitas soluções se estiver no windows.
O que eu faria para dedicar um computador em sua LAN para ficar online o tempo todo e ter um servidor selenium RC funcionando. Portanto, você usa o IP desse computador em vez de localhost para executar seus testes. Por exemplo:
(considerando que esse é o ip do computador rodando o servidor).
Com essa configuração, você executa seus testes em seu computador, os navegadores e a janela do servidor RC ficam em outro computador e volte para o seu quando terminar.
fonte
No Linux, você pode executar seu navegador de teste em uma tela virtual. Você precisará do
xvfb
pacote para criar um servidor X virtual. Em distros baseadas em Debian, basta executarHá uma ferramenta interessante
ephemeral-x.sh
que configura convenientemente qualquer comando para ser executado no visor virtual. Faça o download e torne-o executável:Depois, você pode simplesmente usá-lo para iniciar o servidor Selenium:
Todas as janelas do navegador criadas pelo Selenium agora usarão o visor virtual e ficarão invisíveis para você.
fonte
Se você estiver no Windows, uma opção é executar os testes com uma conta de usuário diferente . Isso significa que o navegador e o servidor java não ficarão visíveis para sua conta.
fonte
É assim que eu executo meus testes com o maven em um desktop Linux (Ubuntu). Fiquei farto de não poder trabalhar com o webdriver do firefox sempre focado.
Eu instalei o xvfb
É isso aí
fonte
Em muitos casos, o PhantomJS não atenderá completamente às suas necessidades, gostaria de elaborar sobre a opção de cromo sem cabeça mencionada na resposta de Dave Hunt.
O Chrome 57 acaba de lançar esse recurso. Você pode usá-lo passando a sinalização --headless por meio do ChromeDriver; para obter mais informações, consulte a discussão nesta questão
fonte
Há um projeto relacionado ao PhantomJS chamado GhostDriver , que foi criado para executar instâncias do PhantomJS em uma grade do Selenium usando o protocolo JSON do webdriver wire. Provavelmente é isso que você está procurando, embora esta questão já tenha 4 anos.
fonte
No MacOSX, não consegui ocultar a janela do navegador, mas pelo menos descobri como movê-la para uma tela diferente para não atrapalhar tanto meu fluxo de trabalho. Enquanto o Firefox está executando os testes, basta controlar e clicar em seu ícone no dock, selecionar Opções e Atribuir ao monitor 2.
fonte
A propósito, este é um recurso necessário para qualquer desenvolvedor executando o e2e que logicamente irá gerar navegadores. Em um ambiente de desenvolvimento, é irritante lidar com a janela que sempre aparece e com a qual você pode acidentalmente interagir fazendo o teste falhar.
fonte
Usar o Chrome headless seria sua melhor aposta, ou você poderia postar diretamente no site para interagir com ele, o que economizaria muito poder de computação para outras coisas / processos. Eu uso isso ao testar bots de automação da web que procuram sapatos em vários sites usando elementos pesados da CPU, quanto mais energia você economiza e quanto mais simples seu programa é, mais fácil é executar vários processos ao mesmo tempo com muito mais velocidade e confiabilidade.
fonte