Перезагрузка страницы — это базовая операция при автоматизированном тестировании, которая используется для сброса состояния страницы и повторного выполнения шагов теста. В Playwright перезагрузка страницы может быть выполнена различными способами, в зависимости от целей теста. Важно понимать, что перезагрузка может повлиять на производительность и стабильность тестов, поэтому её использование должно быть обоснованным.
page.reload()Основной способ перезагрузить страницу в Playwright — это
использовать метод reload() объекта страницы (Page). Этот
метод инициирует перезагрузку текущей страницы с её текущими
параметрами.
Пример использования:
await page.reload();
Метод принимает несколько опциональных параметров, которые позволяют настроить перезагрузку более гибко:
ignoreCache — если установить в true,
кеш браузера не будет использован при перезагрузке страницы.
waitUntil — задаёт, когда перезагрузка считается
завершённой. Возможные значения:
"load" — страница считается загруженной, когда
полностью загружены все ресурсы."domcontentloaded" — страница считается загруженной,
как только DOM готов для взаимодействия."networkidle" — страница считается загруженной, когда
не происходит сетевых запросов в течение хотя бы 500 миллисекунд.Пример с параметрами:
await page.reload({ ignoreCache: true, waitUntil: 'networkidle' });
Этот код перезагружает страницу, игнорируя кеш, и ждёт, пока не завершатся все сетевые запросы, прежде чем продолжить выполнение теста.
reload()reload()
является удобным способом перезагрузки страницы и подходит для
большинства случаев.waitUntil даёт возможность точно контролировать момент
завершения перезагрузки в зависимости от требований теста.page.goto()Ещё один способ перезагрузить страницу — использовать метод
goto(). В отличие от reload(), этот метод
выполняет полную загрузку страницы по указанному URL.
await page.goto(page.url());
В этом случае используется текущий URL, что эквивалентно перезагрузке
страницы. Параметры goto() позволяют задать ожидаемое
поведение:
waitUntil — аналогичен параметру в
reload(), и может принимать такие же значения.timeout — задаёт максимальное время ожидания загрузки
страницы.await page.goto(page.url(), { waitUntil: 'networkidle', timeout: 30000 });
Пример выше перезагружает страницу по её текущему URL и ждёт завершения всех сетевых запросов.
reload() и
goto()reload(): перезагружает текущую
страницу, сохраняя её URL и состояние. Это подходит, когда нужно просто
сбросить состояние страницы без изменения её адреса.goto(): выполняет загрузку новой
страницы по URL, что более подходит для перехода между страницами или
когда нужно полностью загрузить страницу с нуля.Оба метода имеют свои области применения, и выбор между ними зависит от задачи, стоящей перед тестом.
При перезагрузке страницы важно правильно настроить ожидания, чтобы
гарантировать, что все элементы страницы загружены и готовы к дальнейшим
действиям. Это можно делать с помощью различных методов ожидания, таких
как waitForSelector, waitForTimeout или
использование waitUntil в reload() и
goto().
Пример ожидания появления элемента после перезагрузки:
await page.reload({ waitUntil: 'networkidle' });
await page.waitForSelector('.element');
Этот код гарантирует, что перед тем как продолжить тест, будет дождаться окончания загрузки страницы и появления необходимого элемента.
Перезагрузка страницы может быть полезной в различных сценариях тестирования:
Проверка устойчивости страницы к повторным загрузкам. В некоторых тестах необходимо удостовериться, что страницы работают стабильно при перезагрузках. Например, можно проверить, не теряются ли данные, введённые пользователем, или не происходит ли сбой в работе интерфейса.
Тестирование авторизации. Перезагрузка страницы после выполнения входа в систему поможет проверить, сохраняются ли сессии или куки.
Проверка загрузки динамического контента. При тестировании страниц с динамическим контентом важно убедиться, что при перезагрузке страницы данные загружаются корректно и нет ошибок в отображении.
В некоторых случаях полезно сбросить кеш браузера, чтобы избежать
использования устаревших данных. Это можно сделать, установив параметр
ignoreCache: true в методе reload(). Например,
в тестах, где страницы сильно зависят от данных, получаемых с серверов,
использование актуальных ресурсов важно для точных проверок.
Однако стоит учитывать, что сброс кеша увеличивает нагрузку на сервер, поскольку ресурсы будут загружаться заново. Это может повлиять на производительность тестов, поэтому использование этого параметра должно быть обоснованным.
Вместо полного перезагрузки страницы можно использовать другие методы для сброса состояния:
Удаление cookies и локального хранилища. В некоторых случаях достаточно очистить cookies или localStorage, чтобы восстановить начальное состояние страницы. Это позволяет избежать полной перезагрузки и ускорить тестирование.
Использование JavaScript для очистки состояния страницы. Если перезагрузка страницы не требуется, можно использовать JavaScript для очистки формы или сброса состояния через скрипты.
await page.evaluate(() => {
localStorage.clear();
sessionStorage.clear();
});
Это поможет избавиться от нежелательных данных и провести тестирование без загрузки страницы заново.
Перезагрузка страницы в Playwright — это мощный инструмент, но его использование должно быть тщательно продумано с учётом специфики тестируемого приложения.