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.

JBehave + Selenium Webdriver.

JBehave – это еще один из инструментов пользующихся популярностью, когда речь заходит о BDD подходе на проекте. Он похож на Cucumber-JVM, так же использует язык Gherkin для написания тестовых сценариев. Только расширение для файлов здесь уже ".story". Вот пример такого файла:

Narrative: I should be able to Calculate my Body Mass Index

Scenario: I should see my BMI after entering Height and Weight

When I open BMI Calculator Home Page
When I enter height as '181'
When I enter weight as '80'
When I click on the Calculate button
Then I should see bmi as '24.4' and category as 'Normal'

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

import junit.framework.Assert;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

public class Bmi extends StoryBase {

    @When("I open BMI Calculator Home Page")
    public void IOpen(){
        driver.get("http://dl.dropbox.com/u/55228056/bmicalculator.html");
    }

    @When("I enter height as '$height'")
    public void IEnterHeight(String height){
        WebElement heightCMS = driver.findElement(By.id("heightCMS"));
        heightCMS.sendKeys(height);
    }

    @When("I enter weight as '$weight'")
    public void IEnterWeight(String weight){
        WebElement weightKg = driver.findElement(By.id("weightKg"));
        weightKg.sendKeys(weight);
    }

    @When("I click on the Calculate button")
    public void IClickOnTheButton(){
        WebElement button = driver.findElement(By.id("Calculate"));
        button.click();
    }

    @Then("I should see bmi as '$bmi_exp' and category as '$bmi_category_exp'")
    public void IShouldBmiAndCategory(String bmi_exp, String bmi_category_exp){
        WebElement bmi = driver.findElement(By.id("bmi"));
        Assert.assertEquals(bmi_exp, bmi.getAttribute("value"));
        WebElement bmi_category = driver.findElement(By.id("bmi_category"));
        Assert.assertEquals(bmi_category_exp, bmi_category.getAttribute("value"));
        driver.quit();
    }
}

После чего мы должны создать конфигурационный файл для корректного взаимодействия Selenium и JBehave:

import java.util.List;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.LoadFromClasspath;
import org.jbehave.core.junit.JUnitStory;
import org.jbehave.core.reporters.Format;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.steps.InstanceStepsFactory;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public abstract class StoryBase extends JUnitStory {

    protected final static WebDriver driver = new FirefoxDriver();

    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
        .useStoryLoader(new LoadFromClasspath(this.getClass().getClassLoader()))
        .useStoryReporterBuilder(new StoryReporterBuilder()
        .withDefaultFormats()
        .withFormats(Format.HTML,Format.CONSOLE)
        .withRelativeDirectory("jbehave-report")
    }

    @Override
    public List candidateSteps() {
        return new InstanceStepsFactory(configuration(), this).createCandidateSteps();
    }
}
PreviousCucumber JVM + Selenium Webdriver.NextSelenium Webdriver. Тестирование на мобильных браузерах

Last updated 6 years ago