:pencil: Formação Completa Teste Automatizado

:book: Tema da aula:

Projeto Teste com Cucumber e Selenium, utilizando um cenário para busca de CEP no site dos Correios.

Prof Edson Belém - profedsonbelem@gmail.com

Estrutura do projeto depois de finalizado:

Bibliotecas utilizadas:

readme.md


# Ir no site dos Correios Entrar com cep
# e verificar a existencia caso exista o cep
# http://www.buscacep.correios.com.br/sistemas/buscacep

Estória de Usuário 
Simples, pequena, fácil de entender em qualquer Ramo que eu posso 
trabalhar, representando o produto ... "PO" 


"Eu como Analista desejo entrar no site 
  buscacep e ao entrar com 
 o cep válido o endereço será informado"
 
 BDD
 
 Dado ao abrir o site buscacep 
 Quando entrar com o cep '<cep>'
 Entao verificar a existencia do endereco sendo cep valido
 
# Nao esquecer de inserir os (jar cucumber, jar do selenium) 
 
# Cucumber (3 etapas)
# features (folder)
  file=> "cenario.features"
  
# steps  (package)
## classe => TesteSiteBuscaCep
    
# runner (pakage)
## classe => RunnerTest      
  
# A BBD (entrar com valores determinados em Exemplos)
# Variável "cep" 
# Valores abaixo _ os valores deverão constar dentro de 
# aspas 
# " Calculo fora de aspas " ...
  
features  
Exemplos:
|cep|
|"20040007"|
|"2004000"|
|"28000000"|
|"26000000"|


feature
Linguagem
Funcionalidade  Requisito de teste em um padrão Ágil, uml caso de uso

Esquema do Cenario o texto no Padrão  "BDD"

Valores=>Exemplos:

##

## Area de Trabalho/  CotiJavaDriver
## libs selenium e libs cucumber
# Adicionas no Projeto as Libs


# Projeto/ direito / broba (propiedade)
# Build Path/libraries
# add/external jar


#Escrevo o cenario (feature)
# pego os métodos e programo na classe
# Rodo em Runner



#Classe
 WebDriver driver; //Instancia
# Dado (abrir o Browser)
 System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver/");
 this.driver= new ChromeDriver(); //vira Objeto new (criar o objeto)
 this.driver.manage().window().maximize();
  Thread.sleep(1000);
 

#Entao (fecho o Browser)



# Readme Até Agora

package steps;

import cucumber.api.PendingException;
import cucumber.api.java.pt.Dado;
import cucumber.api.java.pt.Entao;
import cucumber.api.java.pt.Quando;

public class StepBuscaCepCorreio {
	// os metodos da classe
	// quem irão fornecer o cenário ...
	// copiar de feature para essa classe
	// ctrl + shift + o

	
	@Dado("^abrir o site buscacep$")
	public void abrir_o_site_buscacep() throws Throwable {

	}

	@Quando("^entrar com o cep '\"(.*?)\"'$")
	public void entrar_com_o_cep(String cep) throws Throwable {

	}

	@Entao("^verificar a existencia do endereco, sendo o cep valido$")
	public void verificar_a_existencia_do_endereco_sendo_o_cep_valido()
    throws Throwable {

	}
}

##
 criar uma variável buscaCep sendo String na Classe
 this.driver.findElement(By.name("relaxation")).sendkeys(cep);
 this.buscaCep = cep;
 Thread.sleep(3000);
 this.driver.findElement(By.xpath("//*[@id="Geral"]/div/div/div[6]/input")).click();

  "//*[@id="Geral"]/div/div/div[6]/input"
   
 
 "//*[@id="Geral"]/div/div/div[6]/input"
 
 
 
 //Plural para verificar a existencia ...
 //Lista para verificar a existencia
 //sabe que existe WebElement (traz)  
 
 List <WebElement> elements=
   this.driver.findElements(By.xpath(""))
  
  if (elements.size()>0){
   //se existe traz 
    WebElement elemento = this.driver.findElement(By.xpath("caminho"));
     System.out.println(elemento.getTexto());
   
  
  
  } else{
    System.out.println("Nao Existe");
  }
   

:warning: Site que iremos utilizar:
:point_right: www.buscacep.correios.com.br/sistemas/buscacep/

:pencil2: Criamos nosso arquivo buscacep.feature na raiz do projeto.

buscacep.feature

#language:pt #encoding:ISO-8859-1 Funcionalidade: Entrar no Site buscacep, verificar se o cep que está em exemplo quando válido traz o endereço, quando inválido "Dados Não Encontrados" Esquema do Cenario: abrir o site www.buscacep.correios.com.br/sistemas/buscacep/ Dado abrir o site buscacep Quando entrar com o cep '<cep>' Entao verificar a existencia do endereco, sendo o cep valido Exemplos: |cep| |"20040007"| |"2004000"| |"28000000"| |"26000000"|

RunnerBuscaCep.java

:pencil2: Criamos a classe Runner para podermos rodar o nosso teste.

package runner; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; //ctrl + shift + o @RunWith(Cucumber.class) @CucumberOptions(features = "features", glue = { "steps" }) public class RunnerBuscaCep { }

:pencil2: Para ser criado automaticamente os steps, rodamos a classe Runner.

Resultado no console:


:pencil2: Esse erro gerado é o que precisamos. Copiamos os métodos para a classe StepBuscaCepCorreio
:warning: Atenção para o caminho do Chromedriver

StepBuscaCepCorreio.java

package steps; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.pt.Dado; import cucumber.api.java.pt.Entao; import cucumber.api.java.pt.Quando; public class StepBuscaCepCorreio { WebDriver driver; // ctrl + shift + o // criando a variavel buscaCep String buscaCep = ""; @Dado("^abrir o site buscacep$") public void abrir_o_site_buscacep() throws Throwable { System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver"); this.driver = new ChromeDriver(); this.driver.get ("http://www.buscacep.correios.com.br/sistemas/buscacep/"); this.driver.manage().window().maximize(); Thread.sleep(1000); } @Quando("^entrar com o cep '\"(.*?)\"'$") public void entrar_com_o_cep(String cep) throws Throwable { this.driver.findElement(By.name("relaxation")).sendKeys(cep); this.buscaCep = cep; Thread.sleep(3000); this.driver.findElement(By.xpath ("//*[@id=\"Geral\"]/div/div/div[6]/input")).click(); } @Entao("^verificar a existencia do endereco, sendo o cep valido$") public void verificar_a_existencia_do_endereco_sendo_o_cep_valido() throws Throwable { // A lista aqui de cima é importante para nao tomar erro, // caso não existe ... List<WebElement> elements = this.driver .findElements(By.xpath ("/html/body/div[1]/div[3]/div[2]/div/div/div[2]/div[2]/div[2]/p")); if (elements.size() > 0) { WebElement elemento = this.driver .findElement(By.xpath ("/html/body/div[1]/div[3]/div[2]/div/div/div[2]/div[2]/div[2]/p")); if (elemento.getText().equals ("DADOS ENCONTRADOS COM SUCESSO.")) { System.out.println("Cep Encontrado :" + this.buscaCep); } else { System.out.println("Cep Nao Encontrado:" + this.buscaCep); } } else { System.out.println("Nao OK ... cep invalido"); } Thread.sleep(500); this.driver.quit(); } }

:warning: Para rodar o projeto.
Clicar na página com o botão direito :arrow_right: run as :arrow_right: JUnit test

:pencil2: Aguardar o servidor abrir o browser algumas vezes para buscar os CEP que inserimos no cenário.




Resultado no console

Cursos EB https://www.cursoseb.com.br