Spec-Zone.ru › Playwright

Запрос

Всякий раз, когда страница отправляет запрос к сетевому ресурсу, следующая последовательность событий генерируется объектом Страница:

  • page.on('request') генерируется при отправке запроса страницей.
  • page.on('response') генерируется при получении статуса ответа и заголовков запроса.
  • page.on('requestfinished') генерируется при загрузке тела ответа и завершении запроса.

Если запрос терпит неудачу в какой-либо момент, вместо события 'requestfinished' (и, возможно, вместо события 'response') генерируется событие page.on('requestfailed').

примечание

Ответы с HTTP-ошибками, такие как 404 или 503, по-прежнему считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием 'requestfinished'.

Если запрос получает ответ с перенаправлением, запрос успешно завершается событием requestfinished, и отправляется новый запрос на перенаправленный URL.

Методы​

allHeaders​

Объект, содержащий все HTTP-заголовки запроса, связанные с этим запросом. Имена заголовков приведены в нижнем регистре.

Использование

await request.allHeaders();

Возвращает

  • Promise<Объект<строка, строка>>

failure​

Добавлен до версии v1.9

Метод возвращает null, если запрос не потерпел неудачу, как сообщается событием requestfailed.

Использование

Пример протоколирования всех неудачных запросов:

page.on('requestfailed', request => {
  console.log(request.url() + ' ' + request.failure().errorText);
});

Возвращает

  • null | Объект
    • errorText строка

      Текст сообщения об ошибке, например 'net::ERR_FAILED'.

frame​

Добавлен до версии v1.9

Возвращает Фрейм, который инициировал этот запрос.

Использование

const frameUrl = request.frame().url();

Возвращает

  • Фрейм

Подробности

Обратите внимание, что в некоторых случаях фрейм недоступен, и этот метод может вызвать исключение.

  • Когда запрос исходит от Сервисного Рабочего. Вы можете использовать request.serviceWorker() для проверки этого.
  • Когда запрос на навигацию отправлен до создания соответствующего фрейма. Вы можете использовать request.isNavigationRequest() для проверки этого.

Вот пример, который обрабатывает все эти случаи:

if (request.serviceWorker())
  console.log(`request ${request.url()} from a service worker`);
else if (request.isNavigationRequest())
  console.log(`request ${request.url()} is a navigation request`);
else
  console.log(`request ${request.url()} from a frame ${request.frame().url()}`);

headerValue​

Возвращает значение заголовка, соответствующего имени. Имя нечувствительно к регистру.

Использование

await request.headerValue(name);

Аргументы

  • name строка

    Имя заголовка.

Возвращает

  • Promise<null | строка>

headers​

Добавлен до версии v1.9

Объект с HTTP-заголовками запроса. Имена заголовков приведены в нижнем регистре. Обратите внимание, что этот метод не возвращает заголовки, связанные с безопасностью, включая заголовки, связанные с cookie. Вы можете использовать request.allHeaders() для получения полного списка заголовков, включающих cookie информацию.

Использование

request.headers();

Возвращает

  • Объект<строка, строка>

headersArray​

Массив со всеми HTTP-заголовками запроса, связанными с этим запросом. В отличие от request.allHeaders(), имена заголовков НЕ приведены в нижнем регистре. Заголовки с несколькими записями, такие как Set-Cookie, появляются в массиве несколько раз.

Использование

await request.headersArray();

Возвращает

  • Promise<Массив<Объект>>
    • name строка

      Имя заголовка.

    • value строка

      Значение заголовка.

isNavigationRequest​

Добавлен до версии v1.9

Является ли этот запрос навигацией фрейма?

Некоторые запросы на навигацию отправляются до создания соответствующего фрейма и, следовательно, не имеют request.frame().

Использование

request.isNavigationRequest();

Возвращает

  • булево

method​

Добавлен до версии v1.9

Метод запроса (GET, POST и т. д.)

Использование

request.method();

Возвращает

  • строка

postData​

Добавлен до версии v1.9

Тело запроса POST, если оно есть.

Использование

request.postData();

Возвращает

  • null | строка

postDataBuffer​

Добавлен до версии v1.9

Тело запроса POST в двоичном формате, если оно есть.

Использование

request.postDataBuffer();

Возвращает

  • null | Буфер

postDataJSON​

Добавлен до версии v1.9

Возвращает разобранное тело запроса для form-urlencoded и JSON в качестве резервного варианта, если таковой имеется.

Если ответ application/x-www-form-urlencoded, то возвращается объект пар ключ-значение. В противном случае он разбирается как JSON.

Использование

request.postDataJSON();

Возвращает

  • null | Сериализуемый

redirectedFrom​

Добавлено до версии v1.9

Запрос, перенаправленный сервером на этот, если таковой имеется.

Когда сервер отвечает с перенаправлением, Playwright создаёт новый Запрос объект. Два запроса связаны методами redirectedFrom() и redirectedTo(). При многократных перенаправлениях сервера, можно построить всю цепочку перенаправлений, многократно вызывая redirectedFrom().

Использование

Например, если сайт http://example.com перенаправляет на https://example.com:

const response = await page.goto('http://example.com');
console.log(response.request().redirectedFrom().url()); // 'http://example.com'

Если сайт https://google.com не имеет перенаправлений:

const response = await page.goto('https://google.com');
console.log(response.request().redirectedFrom()); // null

Возвращает

  • null | Запрос

redirectedTo​

Добавлено до версии v1.9

Новый запрос, отправленный браузером, если сервер ответил с перенаправлением.

Использование

Этот метод является противоположностью request.redirectedFrom():

console.log(request.redirectedFrom().redirectedTo() === request); // true

Возвращает

  • null | Запрос

resourceType​

Добавлено до версии v1.9

Содержит тип ресурса запроса, как он был воспринят движком рендеринга. ResourceType будет одним из следующих: document, stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other.

Использование

request.resourceType();

Возвращает

  • строка

response​

Добавлено до версии v1.9

Возвращает соответствующий объект Ответ, или null если ответ не был получен из-за ошибки.

Использование

await request.response();

Возвращает

  • Promise<null | Ответ>

serviceWorker​

Сервис Работник, выполняющий запрос.

Использование

request.serviceWorker();

Возвращает

  • null | Работник

Подробности

Этот метод доступен только в Chromium. Безопасно вызывать при использовании других браузеров, но он всегда будет null.

Запросы, исходящие из Service Worker, не имеют доступного request.frame().

sizes​

Возвращает информацию о размерах ресурса для данного запроса.

Использование

await request.sizes();

Возвращает

  • Promise<Объект>
    • requestBodySize число

      Размер тела запроса (загрузка данных POST) в байтах. Устанавливается в 0, если тела не было.

    • requestHeadersSize число

      Общее количество байтов с начала сообщения HTTP-запроса до (включительно) двойного CRLF перед телом.

    • responseBodySize число

      Размер полученного тела ответа (кодированного) в байтах.

    • responseHeadersSize число

      Общее количество байтов с начала сообщения HTTP-ответа до (включительно) двойного CRLF перед телом.

timing​

Добавлено до версии v1.9

Возвращает информацию о времени выполнения ресурса для данного запроса. Большинство значений времени становятся доступными после получения ответа, responseEnd становится доступным по завершении запроса. Дополнительную информацию можно найти на странице API времени выполнения ресурса.

Использование

const requestFinishedPromise = page.waitForEvent('requestfinished');
await page.goto('http://example.com');
const request = await requestFinishedPromise;
console.log(request.timing());

Возвращает

  • Объект
    • startTime число

      Время начала запроса в миллисекундах, прошедшее с 00:00:00 1 января 1970 года по UTC

    • domainLookupStart число

      Время непосредственно перед тем, как браузер начинает поиск имени домена для ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • domainLookupEnd число

      Время непосредственно после того, как браузер начинает поиск имени домена для ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • connectStart число

      Время непосредственно перед тем, как пользовательский агент начинает установку соединения с сервером для получения ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • secureConnectionStart число

      Время непосредственно перед тем, как браузер начинает процесс установления защищённого соединения. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • connectEnd число

      Время непосредственно перед тем, как пользовательский агент начинает установку соединения с сервером для получения ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • requestStart число

      Время непосредственно перед тем, как браузер начинает запрашивать ресурс у сервера, кэша или локального ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • responseStart число

      Время непосредственно после того, как браузер получает первый байт ответа от сервера, кэша или локального ресурса. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

    • responseEnd число

      Время непосредственно после того, как браузер получает последний байт ресурса или непосредственно перед закрытием транспортного соединения, что произойдёт первым. Значение дано в миллисекундах относительно startTime, -1, если не доступно.

url​

Добавлено до версии v1.9

URL запроса.

Использование

request.url();

Возвращает

  • строка

© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-request

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API