0
0
Selenium Javatesting~5 mins

Network interception (CDP) in Selenium Java

Choose your learning style9 modes available
Introduction

Network interception lets you watch and change web traffic during tests. It helps check if your app talks to servers correctly.

To check if a web page loads the right data from the server.
To simulate slow or failed network responses during testing.
To block unwanted requests like ads or trackers in tests.
To modify server responses to test app behavior with different data.
To log all network calls for debugging test failures.
Syntax
Selenium Java
DevTools devTools = ((HasDevTools) driver).getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.requestWillBeSent(), request -> {
    // handle request
});

This uses Chrome DevTools Protocol (CDP) via Selenium's DevTools interface.

You must create a DevTools session before intercepting network calls.

Examples
Prints every URL requested by the browser during the test.
Selenium Java
DevTools devTools = ((HasDevTools) driver).getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.requestWillBeSent(), request -> {
    System.out.println("Request URL: " + request.getRequest().getUrl());
});
Logs the HTTP status code of each response received.
Selenium Java
devTools.addListener(Network.responseReceived(), response -> {
    System.out.println("Response status: " + response.getResponse().getStatus());
});
Blocks all requests to URLs matching the ads domain pattern.
Selenium Java
devTools.send(Network.setBlockedURLs(List.of("*://*.ads.com/*")));
Sample Program

This test opens a Chrome browser, starts network interception, blocks ad URLs, and prints all requested URLs while loading example.com.

Selenium Java
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v114.network.Network;
import java.util.Optional;
import java.util.List;

public class NetworkInterceptionExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        ChromeDriver driver = new ChromeDriver();

        DevTools devTools = driver.getDevTools();
        devTools.createSession();

        devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

        devTools.addListener(Network.requestWillBeSent(), request -> {
            System.out.println("Request URL: " + request.getRequest().getUrl());
        });

        devTools.send(Network.setBlockedURLs(List.of("*://*.ads.com/*")));

        driver.get("https://example.com");

        driver.quit();
    }
}
OutputSuccess
Important Notes

Make sure to use the correct ChromeDriver version matching your Chrome browser.

Network interception works only with browsers supporting CDP, like Chrome.

Blocking URLs helps test app behavior without external content.

Summary

Network interception lets tests watch and control web traffic.

Use Selenium's DevTools to enable and listen to network events.

You can block, log, or modify requests and responses during tests.