Pergunta

Eu estou usando Selenium RC para automatizar algumas operações do navegador mas eu quero o navegador para ser invisível. Isso é possível? Quão? E sobre Selenium Grid? Posso ocultar a janela do Selenium RC também?

Foi útil?

Solução

Existem algumas opções:

  • Você pode usar Selenium grade para que o navegador é aberto em uma máquina completamente diferente (ou máquina virtual), que você pode conectar-se via VNC ou Remote Desktop Connection se você queria ver o browser. Além disso, uma outra opção:. Se você executar um processo em primeiro plano Jenkins no servidor remoto, ele pode executar o seu projeto de teste no ambiente de trabalho

  • Você pode executar Selenium 'sem cabeça' no Linux em XVFB. Eu nunca tentei fazer isso e duvido que é realmente vale a pena o esforço. http://www.alittlemadness.com/2008/03/05/ running-selênio-decapitado /

  • Você pode embrulhar Selenium RC em um serviço do Windows. http://support.microsoft.com/kb/137890 . Exceto que as permissões restrições em versões posteriores do Windows provavelmente irá impedir Selênio de acessar o desktop como o Windows 2000 usado para permitir que façamos.

  • Outra opção seria usar algo como WebDriver HTMLUnitDriver, que não lançar um navegador 'real'. http://code.google.com/p/webdriver/ . Também há uma opção PhantomJS, bem como um 'sem cabeça Chrome' que você poderia usar.

  • Claro que há também a opção de usar um serviço como SauceLabs, onde você pode obter os seus testes a serem executados na nuvem. Após os testes de ter concluído que você pode assistir a um vídeo deles em execução.

Outras dicas

No Linux, você pode executar WebDriver em um sem cabeça display (virtual) para esconder o browser. Isso pode ser feito com Xvfb (X framebuffer virtual).

Você pode controlar Xvfb diretamente do código Python usando xvfbwrapper: https://github.com/cgoldberg/xvfbwrapper

código Python para executar sem cabeça ficaria assim:

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

Instalar dependências em Debian / Ubuntu:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

I facilmente conseguiu esconder a janela do navegador.

Apenas instalar PhantomJS . Em seguida, altere esta linha:

driver = webdriver.Firefox()

para:

driver = webdriver.PhantomJS()

O resto do seu código não precisará ser alterado e nenhum navegador será aberta. Para fins, o uso driver.save_screenshot('screen.png') depuração em diferentes etapas de seu código.

+1 para Selenium RC como um serviço do Windows.

Para ter os testes executados completamente escondido, eu acho que você não tem muito soluções, se você estiver no Windows.

O que eu faria para dedicar um computador em seu LAN para estar online o tempo todo e tem um servidor Selenium RC em execução. Então você usa IP do computador em vez de localhost para executar os testes. Por exemplo:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(considerando que esse é o ip do computador que executa o servidor).

Tendo essa configuração, você executar os testes em seu computador, os navegadores e janela de servidor do RC estão em outro computador e as costas ir ao seu feito uma vez.

No Linux, você pode executar o seu navegador teste em uma tela virtual. Você vai precisar do pacote xvfb para a criação de um servidor X virtual. Em distros baseadas no Debian, basta executar

sudo apt-get install xvfb

Há uma boa ferramenta ephemeral-x.sh que irá convenientemente configurar qualquer comando para executar no visor virtual. Faça o download e torná-lo executável:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

Em seguida, você pode simplesmente usá-lo para iniciar o servidor Selenium:

./ephemeral-x.sh java -jar selenium-standalone.jar

Todas as janelas do navegador criados por selênio irá agora usar o monitor virtual e será invisível para você.

Se você estiver no Windows, uma opção é executar os testes em uma conta de usuário diferente . Isso significa que o servidor navegador e Java não será visível para a sua própria conta.

Isto é como eu corro meus testes com o Maven em um desktop linux (Ubuntu). I got alimentado não ser capaz de trabalhar com o firefox Webdriver sempre levando foco.

Eu instalei xvfb

xvfb prazo -a mvn clean install

Thats it

Em muitos casos, PhantomJS não irá atender completamente suas necessidades, eu gostaria de elaborar sobre a opção sem cabeça cromo mencionado na resposta de Dave Hunt.

cromo 57 acaba de lançar este recurso. Você pode usá-lo, passando a bandeira --headless via ChromeDriver, para mais informações ver a discussão em esta questão

Há um projeto relacionado PhantomJS chamado GhostDriver , que se destina a executar instâncias PhantomJS em uma grade Selenium usando fio Webdriver protocolo JSON. Isso é provavelmente o que você está procurando, embora esta questão é de 4 anos de idade agora.

Em MacOSX, eu não tenho sido capaz de esconder a janela do navegador, mas pelo menos eu descobri como movê-lo para uma exibição diferente para que ele não perturbar o meu trabalho tanto. Enquanto o Firefox está em execução testes, apenas controlar-clique em seu ícone no Dock, selecione Opções e, em Atribuir para exibir 2.

curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

Pela forma como este é um recurso necessário por qualquer e2e correndo desenvolvedor que logicamente irá aparecer navegadores. Em um ambiente de desenvolvimento é irritante para lidar com a janela que continua aparecendo e que o que você pode acidentalmente interagem fazer o teste falhar.

Usando sem cabeça Chrome seria a sua melhor aposta, ou você pode postar diretamente para o site para interagir com ele, o que permitiria poupar uma grande quantidade de poder computacional para outras coisas / processos. Eu uso isso quando testando bots automação web que procura por sapatos em vários sites usando elementos cpu pesados, mais poder de salvar, e quanto mais simples o seu programa é, o que é mais fácil executar vários processos ao mesmo tempo com velocidade maior MUHC e confiabilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top