Automação de Testes usando Selenium, Jenkins e a linguagem JAVA, neste tutorial vamos utilizar as seguintes ferramentas:
Vamos precisar instalar e configurar um por um, porém sempre iremos testar o mesmo / configurar o mesmo, porem com o Maven já pegamos o TestNG e o Selenium :)
O primeiro passo é instalar o Eclipse, você pode baixar ele pelo site, vou estar usando a versão 3.8.1:
Tenha em mente que para instalar o mesmo é preciso ter instalado:
Depois de instalado / Copiado execute o mesmo, durante essa execução o programa irá pedir para configurar as suas preferências, configure.
Dê um nome ao seu projeto, NEXT em seguida finish (isso é só o básico), no lado esquerdo fica o esqueleto do(s) seu(s) projeto(s), vá clicando no [+] e procure pela pasta src, clique com o botão direito do mouse na mesma e crie um pacote (package), por sua vez, dentro do pacote crie um classe (class), fica assim (o .java é colocado sozinho)
Meu Inicio.java
package com.projeto.pacote;
public class Inicio {
public static void main (String args[]){
System.out.println("Meu Primeiro Projeto java :)");
}
}
Se você tiver problemas em executar o código, vá em configurar execução (botão direito na sua classe, Run as -> Run Configurations), no lado esquerdo deve ter uma opção “Java Aplication” crie uma nova e coloque as info do seu projeto, o meu está:
Project:
Projeto.com
Main class:
com.projeto.pacote.Inicio
Clique em:
Procure e instale os seguintes plugins:
O Selenium é(são) a(s) biblioteca(s) que vamos usar para subir um browser e executar nossa automação, para isso devemos baixa-las:
Após instalar o plugin para o Eclipse, é necessário baixar e configurar o Maven, para baixar utilize a URL abaixo:
Após baixar, colque ele em alguma pasta, esta pasta será a home dele, portanto crie uma variável de ambiente chamada M2_HOME com o caminho da pasta que você criou / colocou para o mesmo, também aconselho colocar o M2_HOME/bin no seu path :)
Crie um projeto novo do tipo Maven no seu Eclipse, selecione o layout de “Quick Start”, altere seu arquivo pom.xml e adicione as seguintes dependências:
(ps: pode demorar um puco pois o Maven vai baixar muita coisa durante a criação do projeto)
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-safari-driver</artifactId>
<version>2.42.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.17</version>
<type>maven-plugin</type>
</dependency>
Também é interessante adicionar as seguintes linhas para que se possa passar para o Jenkins quais testes serão rodados (modifique conforme necessário)
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration>
<suiteXmlFiles>
<suiteFile>xml/${suiteFile}</suiteFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Fique atento a linha
<suiteFile>xml/${suiteFile}</suiteFile>
a variável $suiteFile é definida pela compilação do seu projeto, nesse caso é necessário o argumento -D seguido pela variável, ex:
mvn clean test -DsuiteFile
sendo assim, ele irá passar o nome do arquivo, dessa maneira podemos rodar vários testes dentro do mesmo projeto.
Depois botão direito no seu MavenProject:
Selecione as opções para atualizar, instalar e limpar o projeto
Baixe o plugin para o Eclipse, como já adicionamos o mesmo como dependência em nosso pom.xml, basta clicar no seu projeto com o botão direito:
Nesse momento você será perguntando sobre o nome, id e informações da sua suite, essas info tem significância local, portanto coloque o que bem entender. O mais importante dessa etapa é o arquivo que ele irá gerar testing.xml, ele não precisa se chamar assim ou ficar na raiz, ai é um critério seu.
Dentro do testing.xml você irá definir quais classes irão rodar, e dentro dessas classes deve-se indicar quais testes vão rodar ou não, isso é feito através de sintaxes do próprio testNG:
package com.daitan;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
public class Teste {
public static WebDriver driver = new FirefoxDriver();
@BeforeSuite
public static void abreSite()
{
//navega até uma página
driver.navigate().to("http://www.ragazzid.com.br/");
}
@Test
public static void abreSite ( String[] args )
{
WebElement campo = driver.findElement(By.id("casa"));
}
}
Não há classe main, mas mesmo assim isso irá funcionar, pois o testNG verá o @Test e o @BeforeSuite e irá executar conforme mostrado!
Baixe o Jenkis ( o .war) :
Coloque o mesmo em uma pasta, e o execute como jar:
java -jar jenkins.war
O Jenkins já deve estar rodando agora, por padrão na porta 8080. Vá ao seu browser e acesse a URL: http://localhost:8080
Clique em:
Configure JDK / Maven conforme seu sistema (demarque a opção instalar automaticamente para poder adicionar o caminho da sua instalação)
Salve e volte a index (http://localhost:8080)
Na index, clique em novo item, dê um nome e selecione “Construir um projeto de software usando free-style”
Preencha os campos do topo conforme sua necessidade, clique em avançado e use um workspace customizado, apontando o diretório do seu projeto maven (que criamos anteriormente)
No final da página, em build, adicione um passo a build “chamar alvos maven de alto nível” e adicione a seguinte sintaxe:
clean test -DsuiteFile=testng.xml
O comando acima é o que o maven vai executar antes de iniciar o TestNG, portanto substitua o suiteFile=testng.xml pelo que você configurou no seu pom.xml (dentro de build)
Se quiser, adicione um passo pós build para gerar relatórios do Junit, mas ai é seu critério
Pronto :)