openAndWait
Обзор
Используйте команду openAndWait для открытия страницы и ожидания ее загрузки (по комбинации указанных факторов).
Функции ожидания неактивности сети и падения по сетевым ошибкам доступны только при использовании браузеров с поддержкой Chrome DevTools Protocol (CDP).
Использование
await browser.openAndWait("some/url", {
selector: [".some", ".selector"],
predicate: () => document.isReady,
ignoreNetworkErrorsPatterns: ["https://mc.yandex.ru", "https://avatars.mds.yandex.net/*"],
waitNetworkIdle: true,
waitNetworkIdleTimeout: 500,
failOnNetworkError: true,
timeout: 20000,
});
Параметры команды
| Имя | Тип | Описание |
| url | String | Адрес страницы. |
| WaitOpts | Object | Параметры ожидания страницы. Опционален, как и все его поля. |
WaitOpts
| Имя | Тип | Описание |
| selector | String|String[] | Селектор (/селекторы) элемента (/элементов), которые должны существовать на загруженной странице. |
| predicate | () => Promise<bool> | bool | Предикат, возвращающий true, если страница загружена. Выполняется в браузерном контексте: waitUntil. |
| waitNetworkIdle | Boolean | Если true, ожидает окончания выполнения всех сетевых запросов. По умолчанию true. Работает только в CDP браузерах, игнорируется для остальных. |
| waitNetworkIdleTimeout | Number | Время (в миллисекундах) после окончания всех сетевых запросов, чтобы считать сеть простаивающей. По умолчанию 500. |
| failOnNetworkError | Boolean | Нужно ли бросать ошибку при сетевых ошибках. По умолчанию true. Работает только в CDP браузерах, игнорируется для остальных |
| shouldThrowError | (match) => Boolean | Предикат, который должен вернуть true по Match, если сетевая ошибка считается критической для корректной загрузки страницы. По умолчанию, возвращает true для картинок, стилей и шрифтов. |
| ignoreNetworkErrorsPatterns | Array<String | RegExp> | Паттерны адресов ресурсов, для которых игнорируется проверка успешности загрузки. Имеет приоритет над shouldThrowError. |
| timeout | Number | Таймаут открытия страницы. По умолчанию, используется значение pageLoadTimeout. Выбрасыв ается исключение, если по истечени времени селекторы все еще не существуют, или предикат все еще резолвит false |
Примеры использования
it("some test", async ({ browser }) => {
// С `waitNetworkIdle` также ожидаем загрузки картинок, шрифтов, стилей, игнорируя ошибки метрики
await browser.openAndWait("some/url", {
selector: [".selector"],
predicate: () => document.isReady,
ignoreNetworkErrorsPatterns: ["https://mc.yandex.ru"],
waitNetworkIdle: true,
waitNetworkIdleTimeout: 500,
failOnNetworkError: true,
timeout: 20000,
});
await browser.assertView("plain", ".selector");
});