Веб-приложения, использующие видеоконтент, становятся всё более популярными. С появлением HTML5 видео, работа с мультимедийными элементами на веб-страницах значительно упростилась. В тестировании веб-приложений с использованием WebDriverIO необходимо понимать, как правильно взаимодействовать с элементами видеоплеера, особенно если требуется проверка воспроизведения видео или управление его параметрами.
HTML5 <video> элемент поддерживает атрибуты для
управления воспроизведением видео, такие как controls,
autoplay, loop, и другие. Для работы с этим
элементом через WebDriverIO, необходимо сначала найти его на странице. В
большинстве случаев это можно сделать с помощью CSS-селекторов, XPath
или других стратегий поиска элементов.
Пример использования CSS-селектора для нахождения видеоплеера:
const videoElement = await $('#videoPlayer');
Также возможно использование XPath, если требуется более сложная логика поиска:
const videoElement = await $('//video[@id="videoPlayer"]');
HTML5 видео предоставляет несколько методов для взаимодействия с ним через JavaScript. Это позволяет в тестах контролировать процесс воспроизведения, паузу и другие функции. В WebDriverIO также можно вызывать эти методы.
Запуск воспроизведения видео:
Чтобы воспроизвести видео, можно использовать метод
play(). Для этого нужно получить доступ к элементу и
вызвать на нём метод play() через execute:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
video.play();
});
Пауза видео:
Для того чтобы поставить видео на паузу, можно использовать
аналогичный подход с методом pause():
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
video.pause();
});
При тестировании видеоконтента может быть полезно проверить,
воспроизводится ли видео в данный момент. Для этого можно получить
текущий статус с помощью метода paused, который возвращает
true, если видео на паузе, и false, если оно
воспроизводится.
const isPaused = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
return video.paused;
});
Если необходимо проверить, завершено ли воспроизведение видео, можно
использовать свойство ended, которое будет равно
true, если видео закончилось.
const isEnded = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
return video.ended;
});
Для тестирования видео может понадобиться проверить или изменить
уровень громкости. HTML5 элемент <video> поддерживает
атрибут volume, который позволяет устанавливать уровень
громкости от 0 до 1.
Для проверки текущего уровня громкости можно использовать:
const volume = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
return video.volume;
});
Чтобы установить уровень громкости, достаточно выполнить:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
video.volume = 0.5; // Устанавливаем громкость на 50%
});
Для тестирования функционала перемотки видео можно использовать метод
currentTime, который позволяет установить или получить
текущее время воспроизведения видео.
Пример получения текущего времени:
const currentTime = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
return video.currentTime;
});
Для перемотки видео в конкретный момент времени нужно установить
значение для currentTime:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
video.currentTime = 30; // Перемотка на 30 секунд
});
Чтобы проверить длительность видео, используется атрибут
duration. Он возвращает продолжительность видео в
секундах.
const duration = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
return video.duration;
});
Знание длительности видео полезно для реализации тестов, например, для проверки, что видео не завершилось раньше времени, если на странице его продолжительность явно указана.
Некоторые видеоплееры поддерживают возможность переключения в полноэкранный режим. Для тестирования этой функции необходимо использовать API браузера, так как стандартные HTML5 методы не предоставляют прямого способа проверки состояния полноэкранного режима.
Для выполнения операции перехода в полноэкранный режим через WebDriverIO можно использовать следующий код:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
const requestFullscreen = video.requestFullscreen || video.mozRequestFullScreen || video.webkitRequestFullScreen;
if (requestFullscreen) requestFullscreen.call(video);
});
Веб-сайты могут использовать встроенные субтитры для видео с помощью
элемента <track>. Для тестирования субтитров можно
проверить, отображаются ли они, а также активированы ли соответствующие
настройки.
Чтобы включить субтитры, можно использовать следующие шаги:
<track> в видеоплеере.Пример:
const subtitlesEnabled = await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
const track = video.querySelector('track');
return track && track.mode === 'showing';
});
Для изменения режима отображения субтитров:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
const track = video.querySelector('track');
if (track) {
track.mode = 'showing'; // Включаем субтитры
}
});
При загрузке видеоконтента могут возникать ошибки (например, неправильный формат файла, недоступность источника). Важно проверить корректную загрузку видео и обработать возможные исключения.
Для этого можно использовать событие error, чтобы
убедиться в том, что видео не имеет проблем при загрузке:
await browser.execute(() => {
const video = document.querySelector('#videoPlayer');
video.addEventListener('error', () => {
console.log('Ошибка при загрузке видео');
});
});
Если на веб-странице имеется кастомный видеоплеер с кнопками управления (например, для паузы, воспроизведения, перемотки), можно взаимодействовать с ними, используя WebDriverIO для кликов по кнопкам или ввода текста в элементы управления.
Пример клика по кнопке воспроизведения:
const playButton = await $('#playButton');
await playButton.click();
Эти методы позволяют автоматизировать тестирование функционала видеоплееров, проверять их поведение в различных сценариях и убедиться, что они работают должным образом.
Работа с HTML5 Video через WebDriverIO позволяет тестировать широкий спектр возможностей видеоплееров, включая управление воспроизведением, проверку состояния, работу с громкостью, субтитрами и другими элементами управления. Знание методов работы с видеоконтентом позволяет эффективно автоматизировать тестирование и убедиться в корректности отображения и функциональности видеоматериалов на веб-странице.