Clipboard сервис в WebdriverIO используется для работы с буфером обмена браузера или операционной системы в процессе автоматизированного тестирования. Он позволяет получать, копировать и вставлять текстовые данные, что особенно полезно при проверке функциональности форм, копирования ссылок, кнопок «Скопировать» и других интерактивных элементов веб-приложений.
Для использования Clipboard сервиса требуется установка соответствующего пакета WebdriverIO:
npm install @wdio/clipboard-service --save-dev
После установки сервис подключается в конфигурационном файле
wdio.conf.js через секцию services:
exports.config = {
services: ['clipboard'],
// остальные настройки
};
Подключение сервиса автоматически расширяет глобальный объект
browser методами для работы с буфером обмена.
Clipboard сервис предоставляет три ключевых метода:
browser.getClipboard() Получает
текущее содержимое буфера обмена. Возвращает строку.
const text = await browser.getClipboard();
console.log(text); // выводит текст из буфера обменаbrowser.setClipboard(text)
Устанавливает заданный текст в буфер обмена.
await browser.setClipboard('Пример текста');
const copiedText = await browser.getClipboard();
console.log(copiedText); // 'Пример текста'browser.clearClipboard() Очищает
буфер обмена, удаляя текущее содержимое.
await browser.clearClipboard();
const empty = await browser.getClipboard();
console.log(empty); // ''Эти методы полностью асинхронные и поддерживают синтаксис
async/await.
Clipboard сервис широко используется при автоматизации таких сценариев:
Пример теста копирования текста:
describe('Clipboard functionality', () => {
it('should copy text to clipboard', async () => {
await browser.url('https://example.com');
const copyButton = await $('#copy-button');
await copyButton.click();
const clipboardText = await browser.getClipboard();
expect(clipboardText).toEqual('Текст для копирования');
});
});
Пример вставки текста из буфера обмена в поле ввода:
describe('Paste from clipboard', () => {
it('should paste text into input', async () => {
await browser.setClipboard('Текст для вставки');
const input = await $('#input-field');
await input.click();
await browser.keys(['Control', 'v']); // для Windows
// Для MacOS можно использовать ['Meta', 'v']
const value = await input.getValue();
expect(value).toBe('Текст для вставки');
});
});
Ctrl+V или Cmd+V) важно учитывать платформу и
раскладку клавиатуры.browser.clearClipboard()).WaitFor или Expect WebdriverIO, для
синхронизации действий с интерфейсом и проверки состояния
элементов.Clipboard сервис в WebdriverIO предоставляет удобный и надёжный инструмент для работы с буфером обмена, позволяя эмулировать действия пользователя и проверять функциональность приложений на уровне копирования и вставки текста. Его интеграция в тестовую стратегию обеспечивает более полный охват сценариев, связанных с взаимодействием пользователя с данными.