Selenium Webdriver для Java автоматизаторов
  • Introduction
  • Selenium Webdriver. Введение
    • WebDriver. Обзор и принцип работы
    • Основные методы Selenium Webdriver API
    • Типы локаторов
    • Ожидания
    • Пример использования Webdriver API
  • Selenium WebDriver. Сложные вопросы.
    • Локаторы. CSS, XPATH, JQUERY.
    • WebDriver API. Сложные взаимодействия.
    • Контроль за ходом теста. Кастомные ожидания, попапы, алерты, Iframes.
    • DDT подход
  • Page Object Pattern. Архитектура тестового проекта.
    • Использование паттерна Page Object.
    • Альтернативные Page Object подходы.
    • Вспомогательные инструменты.
    • Уровни абстракции. Создание кастомных элементов.
    • Архитектура. Основные элементы.
  • Selenium Grid и "headless" браузеры
    • Использование HtmlUnit драйвера в автотестировании
    • "Headless" тестирование с PhantomJS и SlimerJS
    • Grid. Настройка и использование.
  • Selenium Webdriver. Проблемные моменты
    • Вспомогательные инструменты
    • Basic Authentification Window
    • Загрузка файла
    • Отправление файла (upload)
    • Логгирование в Selenium Webdriver
    • Скриншоты элементов и работа с изображением
  • Selenium Webdriver. Тестирование HTML5 веб приложений
    • Автоматизация Canvas элементов.
    • Автоматизация видео плеера.
    • Работа с web storage.
  • Selenium Webdriver. Расширение инструмента
    • Selenium "обертки" и расширения
    • Thucydides
    • Geb
    • Selenide
    • Репортинг
  • Selenium Webdriver. Тестирование клиентской производительности
    • Navigation timing API
    • Browser Mob Proxy
    • DynaTrace
    • HttpWatch
  • Selenium Webdriver. Behavior-Driven Development.
    • Обзор методологии и инструментов на Java.
    • Cucumber JVM + Selenium Webdriver.
    • JBehave + Selenium Webdriver.
  • Selenium Webdriver. Тестирование на мобильных браузерах
    • Обзор инструментов
    • Установка и настройка Appium. Принципы и основы работы с инструментом
    • Запуск тестов на десктоп и мобильных браузерах
  • Облачные сервисы.
    • Обзор рынка облачных сервисов для тестирования.
    • SauceLabs. Услуги и планы.
    • Настройка тестов для запуска в SauceLabs.
    • Использование Sauce Connect и Travis CI.
  • Continuous Integration
    • Что такое Continuous Integration
    • Распространенные CI-серверы
    • Jenkins - установка и настройка
Powered by GitBook
On this page
  1. Selenium Webdriver. Behavior-Driven Development.

Cucumber JVM + Selenium Webdriver.

Cucumber JVM - это один из популярных инструментов реализации Behavior Driven Development (BDD) подхода в Java. Этот инструмент позволяет создавать тесты любому участнику проектной команды. Для этого используют язык Gherkin, в котором основными являются следующие слова: Given, When и Then. Тесты, созданные таким образом, хранятся в файлах с расширением ".feature".

Зависимости для Maven проекта:

UTF-81.71.70.4.41.1.2

junitjunit4.11info.cukescucumber-picocontainer1.1.5testinfo.cukescucumber-junit1.1.5testorg.jsoupjsoup1.7.3

Сценарий написанный с помощью языка Gherkin:

Feature: Customer Transfer's Fund
         As a customer,
         I want to transfer funds
         so that I can send money to my friends and family
Scenario: Valid Payee
          Given the user is on Fund Transfer Page
          When he enters "Jim" as payee name
          And he enters "100" as amount
          And he Submits request for Fund Transfer
          Then ensure the fund transfer is complete with "$100
          transferred successfully to Jim!!" message
Scenario: Invalid Payee
          Given the user is on Fund Transfer Page
          When he enters "Jack" as payee name
          And he enters "100" as amount
          And he Submits request for Fund Transfer
          Then ensure a transaction failure message "Transfer
          failed!! 'Jack' is not registered in your List of Payees"
          is displayed
Scenario: Account is overdrawn past the overdraft limit
          Given the user is on Fund Transfer Page
          When he enters "Tim" as payee name
          And he enters "1000000" as amount
          And he Submits request for Fund Transfer
          Then ensure a transaction failure message "Transfer
          failed!! account cannot be overdrawn" is displayed

Создание java класса:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import cucumber.annotation.*;
import cucumber.annotation.en.*;
import static org.junit.Assert.assertEquals;

public class FundTransferStepDefs {
    protected WebDriver driver;

    @Before
    public void setUp() {
        driver = new ChromeDriver();
    }

    @Given("the user is on Fund Transfer Page")
    public void The_user_is_on_fund_transfer_page() {
        driver.get("http://dl.dropbox.com/u/55228056/fundTransfer.html");
    }

    @When("he enters \"([^\"]*)\" as payee name")
    public void He_enters_payee_name(String payeeName) {
        driver.findElement(By.id("payee")).sendKeys(payeeName);
    }

    @And("he enters \"([^\"]*)\" as amount")
    public void He_enters_amount(String amount) {
        driver.findElement(By.id("amount")).sendKeys(amount);
    }

    @And("he Submits request for Fund Transfer")
    public void He_submits_request_for_fund_transfer() {
        driver.findElement(By.id("transfer")).click();
    }

    @Then("ensure the fund transfer is complete with \"([^\"]*)\"\ message")
    public void Ensure_the_fund_transfer_is_complete(String msg) {
        WebElement message = driver.findElement(By.id("message"));
        assertEquals(message.getText(),msg);
    }

    @Then("ensure a transaction failure message \"([^\"]*)\" is displayed")
    public void Ensure_a_transaction_failure_message(String msg) {
        WebElement message = driver.findElement(By.id("message"));
        assertEquals(message.getText(),msg);
    }

    @After
    public void tearDown() {
        driver.close();
    }
}

И для изменения настроек Cucumber-JVM мы добавим класс конфигурации:

package fundtransfer.test;

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

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber-htmlreport",
"json-pretty:target/cucumber-report.json"})
public class RunCukesTest {

}
PreviousОбзор методологии и инструментов на Java.NextJBehave + Selenium Webdriver.

Last updated 6 years ago