Учебники

Огурец — таблицы данных

Работая над автоматизацией, мы можем столкнуться с различными сценариями. Каждый сценарий имеет различное значение и потребности.

С самого начала мы взяли пример функции входа в систему для сайта социальной сети, где у нас было только два входных параметра, которые нужно передать. Давайте подумаем о еще некоторой возможности. Как насчет функциональности «Регистрация нового пользователя»? Как правило, какие могут быть входные параметры при регистрации нового пользователя для сайта социальной сети? Что-то вроде следующего —

  • Имя пользователя
  • Адрес электронной почты
  • пароль
  • Повторно введите пароль
  • Дата рождения
  • Пол
  • Номер телефона

Особенность — Регистрация нового пользователя.

Убедитесь, что регистрация нового пользователя не удалась после ввода неверных данных.

Учитывая, что я на новой странице регистрации пользователя.

Когда я ввожу имя пользователя и адрес электронной почты как адрес электронной почты и пароль как, и повторно вводю пароль как и Дата рождения как и Пол как и номер телефона как тогда, регистрация пользователя должна быть неудачной.

На первый взгляд это выглядит немного грязно. Итак, есть ли лучший способ управлять таким количеством входов? Ответом может быть «Таблица данных». Таблица данных — это набор входных данных для одного тега. Этот тег может быть ДАН, КОГДА или ТОГДА.

Напишем приведенный выше сценарий с помощью таблицы данных, и он будет выглядеть следующим образом:

Учитывая, что я на новой странице регистрации пользователя

Когда я ввожу действительные данные на странице

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

Тогда регистрация пользователя должна быть успешной.

пример

Давайте автоматизируем пример таблицы данных.

Шаг 1 — Создайте тестовый проект Maven с именем «DataTableTest».

  • Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

  • Укажите идентификатор группы ( идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

  • Укажите идентификатор артефакта ( идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

  • Нажмите на Готово.

  • Откройте pom.xml —

    • Перейдите к исследователю пакетов в левой части Eclipse.

    • Разверните проект CucumberTest.

    • Найдите файл pom.xml.

    • Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

  • Добавить зависимость для Selenium: это будет указывать Maven, какие файлы jar Selenium должны быть загружены из центрального репозитория в локальный репозиторий.

    • Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей (<dependencies> </ dependencies>) внутри тега проекта.

    • Внутри тега зависимости создайте тег зависимости. (<Зависимость> </ зависимость>).

    • Укажите следующую информацию в теге зависимости.

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

Укажите идентификатор группы ( идентификатор группы будет идентифицировать ваш проект однозначно во всех проектах).

Укажите идентификатор артефакта ( идентификатор артефакта — это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

Нажмите на Готово.

Откройте pom.xml —

Перейдите к исследователю пакетов в левой части Eclipse.

Разверните проект CucumberTest.

Найдите файл pom.xml.

Щелкните правой кнопкой мыши и выберите опцию Открыть с помощью «Текстового редактора».

Добавить зависимость для Selenium: это будет указывать Maven, какие файлы jar Selenium должны быть загружены из центрального репозитория в локальный репозиторий.

Откройте файл pom.xml в режиме редактирования, создайте тег зависимостей (<dependencies> </ dependencies>) внутри тега проекта.

Внутри тега зависимости создайте тег зависимости. (<Зависимость> </ зависимость>).

Укажите следующую информацию в теге зависимости.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Добавить зависимость для Cucumber-Java — это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-Java — это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для Cucumber-JUnit — это будет указывать Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Укажите следующую информацию в теге зависимости.

Добавить зависимость для Cucumber-JUnit — это будет указывать Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Укажите следующую информацию в теге зависимости

Добавить зависимость для JUnit — это будет указывать Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

Создайте еще один тег зависимости.

Укажите следующую информацию в теге зависимости

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Проверьте двоичные файлы.

    • После успешного редактирования pom.xml сохраните его.

    • Перейдите в Проект → Очистить — это займет несколько минут.

Проверьте двоичные файлы.

После успешного редактирования pom.xml сохраните его.

Перейдите в Проект → Очистить — это займет несколько минут.

Шаг 2 — Создайте пакет с именем dataTable в src / test / java

Шаг 3 — Создайте файл компонента.

  • Создайте файл объектов с именем dataTable .feature внутри пакета dataTable (более подробные шаги см. В разделе «Сценарий сценария»).

  • Напишите следующий текст.

    Особенность — Таблица данных

    Убедитесь, что регистрация нового пользователя не прошла успешно после ввода неверных данных.

    Сценарий:

    Учитывая, что я нахожусь на странице регистрации нового пользователя

    Когда я ввожу неверные данные на странице

Создайте файл объектов с именем dataTable .feature внутри пакета dataTable (более подробные шаги см. В разделе «Сценарий сценария»).

Напишите следующий текст.

Особенность — Таблица данных

Убедитесь, что регистрация нового пользователя не прошла успешно после ввода неверных данных.

Сценарий:

Учитывая, что я нахожусь на странице регистрации нового пользователя

Когда я ввожу неверные данные на странице

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

Тогда регистрация пользователя должна быть неудачной

  • Сохраните файл.

Сохраните файл.

Шаг 4 — Создать файл определения шага.

  • Создайте файл определения шага с именем «dataTable.java» внутри пакета dataTable (более подробные шаги см. В разделе «Схема сценария»).

  • Напишите следующий код.

Создайте файл определения шага с именем «dataTable.java» внутри пакета dataTable (более подробные шаги см. В разделе «Схема сценария»).

Напишите следующий код.

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(); 
   } 
}
  • Сохраните файл.

Сохраните файл.

Шаг 5 — Создайте файл класса бегуна.

  • Создайте класс бегуна с именем runTest.java внутри пакета.

  • Напишите следующий код.

Создайте класс бегуна с именем runTest.java внутри пакета.

Напишите следующий код.

package dataTable; 

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

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Сохраните файл.

  • Запустите тест, используя опцию

    • Выберите файл runTest.java из проводника пакетов.

    • Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени».

    • Выберите JUnit test.

Сохраните файл.

Запустите тест, используя опцию

Выберите файл runTest.java из проводника пакетов.

Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени».

Выберите JUnit test.

После успешного выполнения вы можете наблюдать следующие вещи.

Веб-сайт Facebook загружается.

Данные будут введены на странице регистрации.

Кнопка «Отправить» будет нажата.

Мы увидим, что домашняя страница не отображается, и на консоли будет написано «Test Pass».