В автоматизированном тестировании веб-приложений часто возникает необходимость управлять интервалами между действиями. Паузы помогают обеспечить корректное выполнение тестов в условиях асинхронной загрузки элементов, анимаций или задержек на стороне сервера.
WebdriverIO предоставляет несколько способов добавления пауз между действиями. Основные из них:
browser.pause(ms) Универсальный метод для приостановки выполнения теста на указанное количество миллисекунд.
browser.pause(2000); // пауза на 2 секунды
Особенности:
setTimeout и асинхронные функции В асинхронных
тестах паузы могут быть реализованы через
await new Promise.
await new Promise(resolve => setTimeout(resolve, 1500)); // 1.5 секунды
Этот подход более гибкий и часто применяется в комбинации с
async/await.
waitUntil и ожидания элементов WebdriverIO рекомендует использовать умные ожидания, а не статические паузы.
browser.waitUntil(
() => $('#elementId').isDisplayed(),
{
timeout: 5000,
timeoutMsg: 'Элемент не появился в течение 5 секунд'
}
);
Преимущества:
Пример комбинированного подхода:
await $('#loginButton').click();
await browser.pause(1000); // ожидание анимации
await $('#successMessage').waitForDisplayed({ timeout: 5000 });
В данном случае короткая статическая пауза дополняется ожиданием конкретного элемента, что делает тест стабильным.
В wdio.conf.js можно задать implicit
wait, который автоматически применяется ко всем операциям
поиска элементов:
exports.config = {
waitforTimeout: 10000, // 10 секунд ожидания по умолчанию
}
Это снижает необходимость ручного добавления pause и
делает тесты более чистыми.
browser.pause, отдавая
предпочтение ожиданиям элементов.Понимание пауз и их правильное применение позволяет сбалансировать стабильность тестов и их скорость, избегая ложных срабатываний и ошибок из-за асинхронного поведения интерфейса.