Ответ
Да, это возможно, но не напрямую через стандартный API WebDriver. Для этого требуются дополнительные инструменты, которые позволяют перехватывать и модифицировать сетевой трафик браузера.
Основные подходы:
-
Использование прокси (например, BrowserMob Proxy): Прокси-сервер устанавливается между браузером и сервером, позволяя добавлять или изменять заголовки.
// Пример с BrowserMob Proxy (Java) BrowserMobProxy proxy = new BrowserMobProxyServer(); proxy.start(0); proxy.addRequestFilter((request, contents, messageInfo) -> { request.headers().add("X-Custom-Header", "MyValue"); return null; }); Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy); ChromeOptions options = new ChromeOptions(); options.setProxy(seleniumProxy); WebDriver driver = new ChromeDriver(options); -
Использование DevTools Protocol (Chrome/Edge): Современный способ через CDP API, встроенный в Selenium 4+.
// Пример для Chrome (Java, Selenium 4+) ChromeDriver driver = new ChromeDriver(); DevTools devTools = driver.getDevTools(); devTools.createSession(); // Включаем перехват сети devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty())); // Устанавливаем дополнительные заголовки для всех запросов Map<String, Object> headers = new HashMap<>(); headers.put("X-Auth-Token", "secret-token-123"); devTools.send(Network.setExtraHTTPHeaders(new Headers(headers)));
Важные замечания для QA-инженера:
- Цель: Чаще всего это нужно для тестирования API-интеграций, эмуляции мобильных заголовков или передачи токенов аутентификации прямо в браузерный контекст.
- Ограничения: Не все браузеры одинаково хорошо поддерживают эту функциональность. Модификация заголовков может сломать логику сайта (например, проверку CSRF-токенов).
- Альтернатива: Для чистого тестирования API с кастомными заголовками часто лучше использовать специализированные библиотеки (RestAssured, Retrofit) вместо WebDriver.