
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:

# 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");
}
Site que iremos utilizar:
www.buscacep.correios.com.br/sistemas/buscacep/

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
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;
@RunWith(Cucumber.class)
@CucumberOptions(features = "features", glue = { "steps" })
public class RunnerBuscaCep {
}
Para ser criado automaticamente os steps, rodamos a classe Runner.

Resultado no console:

Esse erro gerado é o que precisamos. Copiamos os métodos para a classe StepBuscaCepCorreio
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;
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 {
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();
}
}
Para rodar o projeto.
Clicar na página com o botão direito
run as
JUnit test

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




Resultado no console

Projeto Teste com Cucumber e Selenium, utilizando um cenário para busca de CEP no site dos Correios.
Estrutura do projeto depois de finalizado:
Bibliotecas utilizadas:

readme.md
buscacep.feature
RunnerBuscaCep.java
Resultado no console:
StepBuscaCepCorreio.java
Clicar na página com o botão direito
Resultado no console