Concombre - Tableaux de données

Tout en travaillant sur l'automatisation, nous pouvons être confrontés à une variété de scénarios. Chaque scénario a une signification et des besoins différents.

Depuis le début, nous avons pris un exemple de fonctionnalité de connexion pour un site de réseau social, où nous avions juste deux paramètres d'entrée à passer. Pensons à une autre possibilité. Qu'en est-il de la fonctionnalité «Enregistrement d'un nouvel utilisateur»? En règle générale, quels peuvent être les paramètres d'entrée lors de l'inscription d'un nouvel utilisateur sur un site de réseau social? Quelque chose comme ce qui suit -

  • Nom d'utilisateur
  • Adresse e-mail
  • Password
  • Retaper le mot de passe
  • Birthdate
  • Gender
  • Numéro de téléphone

Feature - Nouvel enregistrement d'utilisateur.

Vérifiez que l'enregistrement du nouvel utilisateur échoue après avoir transmis les entrées incorrectes.

Étant donné que je suis sur une nouvelle page d'inscription d'utilisateur.

Lorsque je saisis le nom d'utilisateur et une adresse e-mail comme adresse e-mail et mot de passe, et que je ressaisis le mot de passe et Date de naissance, Genre et numéro de téléphone, l'enregistrement de l'utilisateur ne devrait pas aboutir.

Cela a l'air un peu désordonné à première vue. Alors, y a-t-il un meilleur moyen de gérer un tel bloc d'entrées? La réponse peut être «Tableau de données». La table de données est un ensemble d'entrées à fournir pour une seule balise. Cette balise peut être GIVEN, WHEN ou THEN.

Écrivons le scénario ci-dessus à l'aide de la table de données et il ressemblera à ce qui suit -

Étant donné que je suis sur une nouvelle page d'inscription d'utilisateur

Lorsque j'entre des données valides sur la page

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

Ensuite, l'enregistrement de l'utilisateur devrait réussir.

Exemple

Automatisons un exemple de table de données.

Step 1 - Créez un projet de test Maven nommé «DataTableTest».

  • Allez dans Fichier → Nouveau → Autres → Maven → Projet Maven → Suivant.

  • Fournir group Id (ID de groupe identifiera votre projet de manière unique dans tous les projets).

  • Fournir artifact Id (L'ID de l'artefact est le nom du fichier jar sans version. Vous pouvez choisir n'importe quel nom en minuscules).

  • Cliquez sur Terminer.

  • Ouvrez pom.xml -

    • Accédez à l'explorateur de packages sur le côté gauche d'Eclipse.

    • Développez le projet CucumberTest.

    • Recherchez le fichier pom.xml.

    • Cliquez avec le bouton droit et sélectionnez l'option Ouvrir avec «Éditeur de texte».

  • Ajouter une dépendance pour Selenium: Cela indiquera à Maven, quels fichiers jar Selenium doivent être téléchargés du référentiel central vers le référentiel local.

    • Open pom.xml est en mode édition, créez une balise de dépendances (<dependencies> </dependencies>), à l'intérieur de la balise de projet.

    • Dans la balise dependencies, créez une balise dependency. (<dependency> </dependency>).

    • Fournissez les informations suivantes dans la balise de dépendance.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Ajouter une dépendance pour Cucumber-Java - Cela indiquera à Maven, quels fichiers Cucumber doivent être téléchargés du référentiel central vers le référentiel local.

    • Créez une autre balise de dépendance.

    • Fournissez les informations suivantes dans la balise de dépendance.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Ajouter une dépendance pour Cucumber-JUnit - Cela indiquera à Maven, quels fichiers Cucumber JUnit doivent être téléchargés du référentiel central vers le référentiel local.

    • Créez une autre balise de dépendance.

    • Fournissez les informations suivantes dans la balise de dépendance.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Ajouter une dépendance pour JUnit - Cela indiquera à Maven, quels fichiers JUnit doivent être téléchargés du référentiel central vers le référentiel local.

    • Créez une autre balise de dépendance.

    • Fournissez les informations suivantes dans la balise de dépendance

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Vérifiez les binaires.

    • Une fois que pom.xml est modifié avec succès, enregistrez-le.

    • Allez dans Projet → Nettoyer - Cela prendra quelques minutes.

Step 2 - Créez un package nommé dataTable sous src/test/java

Step 3 - Créez un fichier d'entités.

  • Créez un fichier d'entités, nommé comme dataTable.feature dans le package dataTable (voir la section aperçu du scénario pour des étapes plus détaillées).

  • Écrivez le texte suivant.

    Feature - Tableau de données

    Vérifiez que l'enregistrement du nouvel utilisateur échoue après avoir transmis des entrées incorrectes.

    Scenario:

    Étant donné que je suis sur la page d'inscription du nouvel utilisateur

    Lorsque j'entre des données invalides sur la page

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

Ensuite, l'enregistrement de l'utilisateur devrait échouer

  • Enregistrez le fichier.

Step 4 - Créez un fichier de définition d'étape.

  • Créez le fichier de définition d'étape nommé 'dataTable.java' dans le package dataTable (voir la section aperçu du scénario pour des étapes plus détaillées).

  • Écrivez le code suivant.

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(); 
   } 
}
  • Enregistrez le fichier.

Step 5 - Créez un fichier de classe de coureur.

  • Créez une classe runner nommée runTest.java dans le package.

  • Écrivez le code suivant.

package dataTable; 

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

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Enregistrez le fichier.

  • Exécutez le test en utilisant l'option

    • Sélectionnez le fichier runTest.java dans l'explorateur de packages.

    • Cliquez avec le bouton droit de la souris et sélectionnez l'option Exécuter en tant que.

    • Sélectionnez le test JUnit.

Vous pouvez observer les choses suivantes lors de l'exécution réussie.

  • Le site Web de Facebook est chargé.

  • Les données seront saisies sur la page d'inscription.

  • Le bouton Soumettre sera cliqué.

  • Nous verrons que la page d'accueil ne s'affichera pas et «Test Pass» sera écrit sur la console.