Pepino - Tabelas de Dados

Ao trabalhar na automação, podemos enfrentar uma variedade de cenários. Cada cenário carrega um significado e necessidades diferentes.

Desde o início, estamos usando um exemplo de funcionalidade de login para um site de rede social, onde tínhamos apenas dois parâmetros de entrada a serem passados. Vamos pensar em mais alguma possibilidade. Que tal a funcionalidade “Novo registro de usuário”? Normalmente, quais podem ser os parâmetros de entrada ao registrar um novo usuário em um site de rede social? Algo como o seguinte -

  • Nome do usuário
  • Endereço de e-mail
  • Password
  • Digite novamente a senha
  • Birthdate
  • Gender
  • Número de telefone

Feature - Novo registro de usuário.

Verifique se o novo registro do usuário foi malsucedido após passar as entradas incorretas.

Dado que estou em uma nova página de registro de usuário.

Quando eu insiro o nome de usuário e um endereço de e-mail como endereço de e-mail e senha como, e reinsiro a senha como e Data de nascimento como e Sexo como e número de telefone como então o registro do usuário deve ser malsucedido.

Parece um pouco confuso à primeira vista. Então, há alguma maneira melhor de gerenciar esse pedaço de entradas? A resposta pode ser “Tabela de dados”. A tabela de dados é um conjunto de entrada a ser fornecido para uma única tag. Essa tag pode ser GIVEN, WHEN ou THEN.

Vamos escrever o cenário acima com a ajuda da tabela de dados e se parecerá com o seguinte -

Dado que estou em uma nova página de registro de usuário

Quando eu insiro dados válidos na página

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Então, o registro do usuário deve ser bem-sucedido.

Exemplo

Vamos automatizar um exemplo de tabela de dados.

Step 1 - Crie um projeto de teste Maven denominado “DataTableTest”.

  • Vá para Arquivo → Novo → Outros → Maven → Projeto Maven → Avançar.

  • Providenciar group Id (ID de grupo identificará seu projeto exclusivamente em todos os projetos).

  • Providenciar artifact Id (Id do artefato é o nome do jar sem versão. Você pode escolher qualquer nome que esteja em minúsculas).

  • Clique em Concluir.

  • Abra pom.xml -

    • Vá para o explorador de pacotes no lado esquerdo do Eclipse.

    • Expanda o projeto CucumberTest.

    • Localize o arquivo pom.xml.

    • Clique com o botão direito e selecione a opção Abrir com “Editor de Texto”.

  • Adicionar dependência para Selenium: Isso indicará Maven, quais arquivos jar Selenium devem ser baixados do repositório central para o repositório local.

    • Abra pom.xml está em modo de edição, crie a tag de dependências (<dependencies> </dependencies>), dentro da tag do projeto.

    • Dentro da tag dependencies, crie a tag dependency. (<dependency> </dependency>).

    • Forneça as seguintes informações na tag de dependência.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Adicionar dependência para Cucumber-Java - Isso indicará Maven, quais arquivos Cucumber devem ser baixados do repositório central para o repositório local.

    • Crie mais uma tag de dependência.

    • Forneça as seguintes informações na tag de dependência.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Adicionar dependência para Cucumber-JUnit - Isso indicará Maven, que arquivos Cucumber JUnit devem ser baixados do repositório central para o repositório local.

    • Crie mais uma tag de dependência.

    • Forneça as seguintes informações na tag de dependência.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Adicionar dependência para JUnit - Isso indicará Maven, quais arquivos JUnit devem ser baixados do repositório central para o repositório local.

    • Crie mais uma tag de dependência.

    • Forneça as seguintes informações na tag de dependência

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Verifique os binários.

    • Depois que pom.xml for editado com sucesso, salve-o.

    • Vá para Projeto → Limpar - levará alguns minutos.

Step 2 - Crie um pacote chamado dataTable debaixo src/test/java

Step 3 - Crie um arquivo de feição.

  • Crie um arquivo de feição, nomeado como dataTable.feature dentro do pacote dataTable (consulte a seção esboço do cenário para etapas mais detalhadas).

  • Escreva o seguinte texto.

    Feature - Tabela de dados

    Verifique se o novo registro do usuário não teve êxito após passar entradas incorretas.

    Scenario:

    Visto que estou na página de registro de novo usuário

    Quando eu insiro dados inválidos na página

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Então, o registro do usuário deve ser malsucedido

  • Salve o arquivo.

Step 4 - Criar arquivo de definição de etapa.

  • Crie o arquivo de definição de etapa denominado 'dataTable.java' dentro do pacote dataTable (consulte a seção esboço do cenário para obter etapas mais detalhadas).

  • Escreva o seguinte código.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 
import cucumber.table.DataTable; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") 
   public void goToFacebook() { 
      //Intiate web browser instance. driver = new FirefoxDriver();
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • Salve o arquivo.

Step 5 - Crie um arquivo de classe de corredor.

  • Crie uma classe de execução chamada runTest.java dentro do pacote.

  • Escreva o seguinte código.

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Salve o arquivo.

  • Execute o teste usando a opção

    • Selecione o arquivo runTest.java no explorador de pacotes.

    • Clique com o botão direito e selecione a opção Executar como.

    • Selecione o teste JUnit.

Você pode observar as seguintes coisas após uma execução bem-sucedida.

  • O site do Facebook é carregado.

  • Os dados serão inseridos na página de registro.

  • O botão Enviar será clicado.

  • Veremos que a página inicial não será exibida e “Test Pass” será escrito no console.