Dica 1 do engenheiro de teste: encaixe a grade do Selenium

Olá de novo. Traduzimos uma nota útil para você antes do início do curso Java QA Engineer .










Todos os anos , engenheiros de automação de teste de todo o mundo pesquisam as ferramentas e técnicas mais recentes para tornar seu ambiente de automação de teste mais estável, rápido e fácil de usar e manter. Isso é vital para garantir que suas estruturas sejam implementadas em grande escala em todos os momentos da empresa. De qualquer forma, estruturas desatualizadas e inchadas estão rapidamente fora de moda.



Selenium Grid é conhecido por ser difícil de configurar, instável e difícil de implantar e / ou controle de versão em um pipeline de CI. Uma maneira mais fácil, mais estável e conveniente é usar as imagens pré-construídas do Selenium Docker.



Observação : a única desvantagem desse método é que ele não é compatível com o IE (Internet Explorer), pois o sistema operacional Windows não pode ser colocado em um contêiner.


Preparação para o trabalho



Para começar, você precisa primeiro instalar o Docker e o Docker Compose em sua máquina. Se você estiver usando o Windows 10 ou Mac, ambos serão instalados usando o Docker Desktop .



Executando sua rede



O repositório oficial do Selenium Docker Hub contém imagens Docker pré-construídas para os nós do Selenium Hub, Firefox e Chrome.



A maneira mais fácil de usá-los em seu Selenium Grid local é criar um arquivo Docker Compose no diretório raiz do seu projeto. Nomeie o arquivo de forma simples docker-compose.yml.



Incluí um exemplo abaixo que cria a seguinte grade:



  • Um cubo de selênio
  • Um nó do Chrome
  • Um nó do Firefox


#docker-compose.yml
version: "3"
services:
  selenium-hub:
	image: selenium/hub:3.141.59-neon
	container_name: selenium-hub
	ports:
  	- "4444:4444"
  chrome:
	image: selenium/node-chrome:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444
  firefox:
	image: selenium/node-firefox:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444


O arquivo Docker Compose descreve como configurar sua grade. Para obter mais informações sobre a criação de arquivos Docker Compose, consulte a documentação oficial .



Para iniciar o seu Grid, basta usar qualquer terminal ( PowerShellou cmdno Windows), no qual execute o seguinte comando a partir do diretório raiz do seu projeto:



docker-compose up


Ligação à rede



Você pode se conectar ao Selenium Grid exatamente da mesma maneira que de costume, já que o Hub está escutando na porta 4444 de sua máquina local. Aqui está um exemplo em que configuramos nosso driver para usar nosso nó Chrome.



// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
           	 
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);           	 
cap.setBrowserName("chrome");
           	 
driver = new RemoteWebDriver(cap);


Em seguida, você pode usar a biblioteca TestNG para executar testes em vários nós em paralelo, como de costume.



É importante notar que vários navegadores podem ser iniciados em cada nó. Isso não é recomendado, no entanto, e usar um navegador por nó é considerado a melhor prática para um desempenho ideal.



Dicas e truques adicionais



Se você quiser ver o que está acontecendo no navegador para depurar seus testes, vale a pena ter uma debugversão do seu docker-compose.ymlarquivo que carregue os debug nós do navegador . Eles contêm um servidor VNC, para que você possa observar o navegador enquanto o teste está sendo executado.



Também é possível rodar navegadores sem interface para aumentar a velocidade (da maneira usual), e o Selenium fornece baseversões das imagens também, então você pode criar suas próprias imagens se precisar instalar software adicional.



Você também pode implantar seu Grid no Kubernetes ou Swarm para criar uma versão estável do Grid para o pipeline de CI . Isso garante a rápida recuperação ou substituição das janelas de encaixe em caso de falha.







Consulte Mais informação:








All Articles