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. Тестирование клиентской производительности

Browser Mob Proxy

Ранее мы уже упоминали этот инструмент, но сейчас нас интересует его возможность собирать данные о производительности. Browser Mob Proxy может собирать данные о производительности и сохранять их в формате HAR.

HAR - это архив, содержащий данные о навигации по world wide web (или AUT), в том числе и данные о клиентской производительности, в формате JSON определенной структуры.

Сохраняются данные следующим образом:

import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.proxy.ProxyServer;

import org.junit.Test;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class SimpleTest {

    @Test
    public void bmpTest() throws Exception {
        // запуск прокси сервера
        ProxyServer server = new ProxyServer(4444);
        server.autoBasicAuthorization("example.com", "username", "password");
        server.start();

        // получение Selenium proxy
        Proxy proxy = server.seleniumProxy();

        // конфигурация FirefoxDriver для использования прокси
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.PROXY, proxy);

        WebDriver driver = new FirefoxDriver(capabilities);

        // создание HAR с меткой
        server.newHar("mypage.ru");

        // открытие страницы
        driver.get("http://example.com/index");

        // получение данных HAR
        Har har = server.getHar();

        // здесь будет обработка полученных данных
        // например, сохранение файл
        proxy.getHar().writeTo(new File("D://Test.har"));

        driver.quit();
        server.stop();
    }
}

Получить информацию можно и без сохранения HAR файла. Java класс net.lightbody.bmp.core.har.HarLog предоставляет набор методов для выборочного получения нужной информации:

Har har = proxy.getHar();

// получить информацию о браузере
System.out.println(har.getLog().getBrowser().getName());
System.out.println(har.getLog().getBrowser().getVersion());

// список всех обработанных запросов
for (HarEntry entry : har.getLog().getEntries()) {

    System.out.println(entry.getRequest().getUrl());
    // время ожидания ответа от сервера в миллисекундах
    System.out.println(entry.getTimings().getWait());
    // время чтения ответа от сервера в миллисекундах
    System.out.println(entry.getTimings().getReceive());
}
PreviousNavigation timing APINextDynaTrace

Last updated 6 years ago

Полученный HAR файл содержит JSON данные, которые можно использовать как текстовую информацию, либо просмотреть в удобном представлении, используя один из существующих инструментов для визуализации (HAR viewer). Например, по адресу

http://www.softwareishard.com/har/viewer/