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. Проблемные моменты

Загрузка файла

Иногда в автоматизации тестирования приходится проверять загрузку файлов (download). Главное правило, касающееся этого функционала: избегайте загрузки файлов в ваших тестах.

Дело в том, что как правило, протестировать то, что вы хотите,можно без непосредственого сохранения на диск файлов.

Пример:

package com.lazerycode.selenium.Tests;
import com.lazerycode.selenium.PageObjects.LoginPage;
import com.lazerycode.selenium.PageObjects.SecretFiles;
import com.lazerycode.selenium.SeleniumBase;
import com.lazerycode.selenium.Utility.FileDownloader;
import org.testng.annotations.Test;
import java.io.File;
import static com.lazerycode.selenium.Utility.CheckFileHash.getFileHash;
import static com.lazerycode.selenium.Utility.TypeOfHash.SHA1;
import static com.thoughtworks.selenium.SeleneseTestNgHelper.assertEquals;

public class LogInGetAFileAndCheckItTest extends SeleniumBase {

    @Test
    public void logInAndDownloadSecretFile() throws Exception {
        getDriverObject().get("http://localhost:8080/downloads/");
        LoginPage loginPage = new LoginPage();
        SecretFiles secretFilesPage = loginPage.logIn("foo", "bar");
        FileDownloader fileDownloader = new FileDownloader(getDriverObject());
        fileDownloader.setURI(secretFilesPage.getSecretFileHREF());
        File secretFile = fileDownloader.downloadFile();
        int httpStatusCode = fileDownloader.getLastDownloadHTTPStatus();
        assertEquals(httpStatusCode, 200);
        assertEquals(getFileHash(secretFile, SHA1), ("781811ab9052fc61e109012acf5f22da89f2a5be"));
    }
}
PreviousBasic Authentification WindowNextОтправление файла (upload)

Last updated 6 years ago

Пример взят отсюда . В нем используется кастомное расширение для Webdriver FileDownloader, который позволяет загрузить файл как временный по атрибуту href="путь-к-файлу", убедиться, что загрузка была успешна (assertEquals(httpStatusCode, 200);), а также сравнить содержимое файла с эталонным, сравнив их хеши (assertEquals(getFileHash(secretFile, SHA1),("781811ab9052fc61e109012acf5f22da89f2a5be"));). Исходный код расширения можно найти по адресу

https://github.com/Ardesco/What-Did-You-Download
https://github.com/Ardesco/Powder-Monkey