Spec-Zone.ru › Playwright

Route

При настройке сетевого маршрута с помощью page.route() или browserContext.route() объект Route позволяет обрабатывать этот маршрут.

Подробнее о сетевых запросах.

Методы​

abort​

Добавлено до версии 1.9

Прерывает запрос маршрута.

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

await route.abort();
await route.abort(errorCode);

Аргументы

  • errorCode string (необязательно)

    Необязательный код ошибки. По умолчанию используется failed. Возможные значения:

    • 'aborted' — Операция была прервана (по действию пользователя)
    • 'accessdenied' — В доступе к ресурсу, не являющемуся сетью, было отказано
    • 'addressunreachable' — IP-адрес недоступен. Обычно это означает, что маршрут к указанному узлу или сети отсутствует.
    • 'blockedbyclient' — Клиент решил заблокировать запрос.
    • 'blockedbyresponse' — Запрос не выполнен, поскольку ответ был отправлен с требованиями, которые не соблюдены (например, проверки предков для «X-Frame-Options» и «Content-Security-Policy»).
    • 'connectionaborted' — Время ожидания соединения истекло из-за того, что для отправленных данных не было получено подтверждение ACK.
    • 'connectionclosed' — Соединение было закрыто (соответствует TCP FIN).
    • 'connectionfailed' — Не удалось установить соединение.
    • 'connectionrefused' — В установлении соединения было отказано.
    • 'connectionreset' — Соединение было сброшено (соответствует TCP RST).
    • 'internetdisconnected' — Интернет-соединение было потеряно.
    • 'namenotresolved' — Не удалось разрешить имя узла.
    • 'timedout' — Время ожидания операции истекло.
    • 'failed' — Произошла общая ошибка.

Возвращает

  • Promise<void>

continue​

Добавлено до версии 1.9

Отправляет запрос маршрута в сеть с необязательными переопределениями.

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

await page.route('**/*', async (route, request) => {
  // Override headers
  const headers = {
    ...request.headers(),
    foo: 'foo-value', // set "foo" header
    bar: undefined, // remove "bar" header
  };
  await route.continue({ headers });
});

Аргументы

  • options Object (необязательно)
    • headers Object<string, string> (необязательно)

      Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.

    • method string (необязательно)

      Если задано, изменяет метод запроса (например, GET или POST).

    • postData string | Buffer | Serializable (необязательно)

      Если задано, изменяет данные запроса, отправляемые методом POST.

    • url string (необязательно)

      Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный.

Возвращает

  • Promise<void>

Подробности

Параметр headers применяется как к перенаправляемому запросу, так и ко всем инициированным им перенаправлениям. Однако параметры url, method и postData применяются только к исходному запросу и не переносятся на перенаправленные запросы.

route.continue() немедленно отправляет запрос в сеть; другие подходящие обработчики вызваны не будут. Используйте route.fallback(), если нужно вызвать следующий подходящий обработчик в цепочке.

предупреждение

Некоторые заголовки запросов являются запрещёнными, и их нельзя переопределить (например, Cookie, Host, Content-Length и другие; полный список см. на этой странице MDN). Если для запрещённого заголовка указано переопределение, оно будет проигнорировано, а вместо него будет использован исходный заголовок запроса.

Чтобы задать пользовательские cookie, используйте browserContext.addCookies().

fallback​

Продолжает обработку запроса маршрута с необязательными переопределениями. Этот метод похож на route.continue(), но перед отправкой запроса вызываются другие подходящие обработчики.

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

Если заданному шаблону соответствуют несколько маршрутов, они выполняются в порядке, обратном порядку их регистрации. Таким образом, последний зарегистрированный маршрут всегда может переопределить все предыдущие. В приведённом ниже примере запрос сначала обработает самый нижний обработчик, затем он передаст его предыдущему, а в конце первый зарегистрированный маршрут прервёт запрос.

await page.route('**/*', async route => {
  // Runs last.
  await route.abort();
});
await page.route('**/*', async route => {
  // Runs second.
  await route.fallback();
});
await page.route('**/*', async route => {
  // Runs first.
  await route.fallback();
});

Регистрация нескольких маршрутов полезна, когда нужно, чтобы разные обработчики обрабатывали разные типы запросов, например вызовы API и ресурсы страницы или GET-запросы и POST-запросы, как в примере ниже.

// Handle GET requests.
await page.route('**/*', async route => {
  if (route.request().method() !== 'GET') {
    await route.fallback();
    return;
  }
  // Handling GET only.
  // ...
});

// Handle POST requests.
await page.route('**/*', async route => {
  if (route.request().method() !== 'POST') {
    await route.fallback();
    return;
  }
  // Handling POST only.
  // ...
});

При передаче запроса следующему обработчику также можно изменить его; таким образом, промежуточный обработчик маршрута может изменить URL, метод, заголовки и postData запроса.

await page.route('**/*', async (route, request) => {
  // Override headers
  const headers = {
    ...request.headers(),
    foo: 'foo-value', // set "foo" header
    bar: undefined, // remove "bar" header
  };
  await route.fallback({ headers });
});

Используйте route.continue(), чтобы немедленно отправить запрос в сеть; в этом случае другие подходящие обработчики вызваны не будут.

Аргументы

  • options Object (необязательно)
    • headers Object<string, string> (необязательно)

      Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.

    • method string (необязательно)

      Если задано, изменяет метод запроса (например, GET или POST).

    • postData string | Buffer | Serializable (необязательно)

      Если задано, изменяет данные запроса, отправляемые методом POST.

    • url string (необязательно)

      Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный. Изменение URL не влияет на выбор маршрута: все маршруты сопоставляются с исходным URL запроса.

Возвращает

  • Promise<void>

fetch​

Выполняет запрос и получает результат, не завершая его обработку, чтобы ответ можно было изменить, а затем завершить.

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

await page.route('https://dog.ceo/api/breeds/list/all', async route => {
  const response = await route.fetch();
  const json = await response.json();
  json.message['big_red_dog'] = [];
  await route.fulfill({ response, json });
});

Аргументы

  • options Object (необязательно)
    • headers Object<string, string> (необязательно)

      Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.

    • maxRedirects number (необязательно)

      Максимальное количество перенаправлений запроса, которые будут выполнены автоматически. Если это количество будет превышено, возникнет ошибка. По умолчанию используется 20. Передайте 0, чтобы не выполнять перенаправления.

    • maxRetries number (необязательно)

      Максимальное количество повторных попыток при сетевых ошибках. В настоящее время повторяется только ошибка ECONNRESET. Повторные попытки не выполняются на основании кодов HTTP-ответов. Если лимит будет превышен, возникнет ошибка. По умолчанию используется 0 — повторных попыток нет.

    • method string (необязательно)

      Если задано, изменяет метод запроса (например, GET или POST).

    • postData string | Buffer | Serializable (необязательно)

      Позволяет задать данные запроса, отправляемые методом POST. Если параметр data является объектом, он будет сериализован в строку JSON, а заголовок content-type будет установлен в значение application/json, если он не задан явно. В противном случае заголовок content-type будет установлен в значение application/octet-stream, если он не задан явно.

    • signal AbortSignal (необязательно)

      Позволяет отменить операцию с помощью AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайте timeout: 0, чтобы полностью отключить тайм-аут.

    • timeout number (необязательно)

      Тайм-аут запроса в миллисекундах. По умолчанию используется 30000 (30 секунд). Передайте 0, чтобы отключить тайм-аут.

    • url string (необязательно)

      Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный.

Возвращает

  • Promise<APIResponse>

Подробности

Обратите внимание: параметр headers применяется как к полученному запросу, так и ко всем инициированным им перенаправлениям. Если нужно применить headers только к исходному запросу, но не к перенаправлениям, используйте вместо этого route.continue().

fulfill​

Добавлено до версии 1.9

Завершает запрос маршрута указанным ответом.

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

Пример завершения всех запросов ответами со статусом 404:

await page.route('**/*', async route => {
  await route.fulfill({
    status: 404,
    contentType: 'text/plain',
    body: 'Not Found!'
  });
});

Пример обслуживания статического файла:

await page.route('**/xhr_endpoint', route => route.fulfill({ path: 'mock_data.json' }));

Аргументы

  • options Object (необязательно)
    • body string | Buffer (необязательно)

      Тело ответа.

    • contentType string (необязательно)

      Если задано, это равносильно установке заголовка ответа Content-Type.

    • headers Object<string, string> (необязательно)

      Заголовки ответа. Значения заголовков будут преобразованы в строки.

    • json Serializable (необязательно)

      Ответ в формате JSON. Если тип содержимого не задан, этот метод установит его в application/json.

    • path string (необязательно)

      Путь к файлу, содержимое которого будет отправлено в ответе. Тип содержимого определяется по расширению файла. Если path — относительный путь, он вычисляется относительно текущего рабочего каталога.

    • response APIResponse (необязательно)

      APIResponse, которым будет завершён запрос маршрута. Отдельные поля ответа (например, заголовки) можно переопределить с помощью параметров fulfill.

    • status number (необязательно)

      Код состояния ответа; по умолчанию используется 200.

Возвращает

  • Promise<void>

request​

Добавлено до версии 1.9

Запрос, подлежащий маршрутизации.

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

route.request();

Возвращает

  • Request

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

Spec-Zone.ru

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