0
0
Selenium Javatesting~20 mins

Network interception (CDP) in Selenium Java - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
CDP Network Interception Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Selenium CDP network interception code?

Consider the following Java Selenium code snippet using Chrome DevTools Protocol (CDP) to intercept network requests and block images. What will be the output printed to the console?

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

// Enable Network domain
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

// Block image requests
devTools.send(Network.setBlockedURLs(List.of("*://*.png", "*://*.jpg")));

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

// Navigate to a page with images
driver.get("https://example.com");

System.out.println("Page loaded");
ARequest URLs printed for all resources including images; then 'Page loaded' printed
BRequest URLs printed for all resources except images; then 'Page loaded' printed
CNo request URLs printed; only 'Page loaded' printed
DThrows runtime exception due to missing permissions
Attempts:
2 left
💡 Hint

Think about what Network.setBlockedURLs does and how listeners behave.

assertion
intermediate
2:00remaining
Which assertion correctly verifies a blocked image request using Selenium CDP?

You want to assert that an image request was blocked by CDP network interception. Which assertion correctly checks this in Java?

Selenium Java
AtomicBoolean imageBlocked = new AtomicBoolean(false);
devTools.addListener(Network.loadingFailed(), loadingFailed -> {
    if (loadingFailed.getType() == ResourceType.IMAGE && loadingFailed.getBlockedReason() != null) {
        imageBlocked.set(true);
    }
});

// Trigger page load with images
// ...

// Which assertion below is correct?
AassertFalse(imageBlocked.get(), "Image request was blocked");
BassertNull(imageBlocked.get(), "Image request was blocked");
CassertTrue(imageBlocked.get(), "Image request was blocked");
DassertEquals(false, imageBlocked.get(), "Image request was blocked");
Attempts:
2 left
💡 Hint

Think about what imageBlocked represents after the listener runs.

🔧 Debug
advanced
2:00remaining
Why does this Selenium CDP network interception code not block images as expected?

Review the following code snippet intended to block image requests. Why does it fail to block images?

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

// Enable Network domain
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

// Attempt to block images
devTools.send(Network.setBlockedURLs(List.of("*.png", "*.jpg")));

// Navigate to page
driver.get("https://example.com");
AThe URL patterns '*.png' and '*.jpg' are invalid; they must be full URLs or regex
BNetwork.setBlockedURLs must be called before Network.enable
CThe driver does not support CDP commands
DThe session was not created before sending commands
Attempts:
2 left
💡 Hint

Check the format expected by setBlockedURLs for URL patterns.

framework
advanced
2:00remaining
Which Selenium Java code snippet correctly sets up CDP network interception to modify request headers?

You want to add a custom header to all outgoing HTTP requests using Selenium CDP in Java. Which code snippet correctly achieves this?

A
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.send(Network.setBlockedURLs(List.of("*")));
driver.get("https://example.com");
B
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.requestWillBeSent(), event -> {
    Map<String, Object> headers = new HashMap<>(event.getRequest().getHeaders());
    headers.put("X-Custom-Header", "MyValue");
    devTools.send(Network.setExtraHTTPHeaders(new Headers(headers)));
});
C
devTools.createSession();
devTools.send(Network.setExtraHTTPHeaders(new Headers(Map.of("X-Custom-Header", "MyValue"))));
driver.get("https://example.com");
D
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
Map<String, String> headers = Map.of("X-Custom-Header", "MyValue");
devTools.send(Network.setExtraHTTPHeaders(new Headers(headers)));
driver.get("https://example.com");
Attempts:
2 left
💡 Hint

Consider when and how to set extra HTTP headers for all requests.

🧠 Conceptual
expert
2:00remaining
What is the main advantage of using Selenium CDP network interception over traditional proxy-based interception?

Choose the best explanation for why Selenium's CDP network interception is preferred over using an external proxy for network control in browser automation.

ACDP network interception integrates directly with the browser, providing lower latency and more accurate control without external dependencies
BProxy-based interception is faster and more reliable than CDP, so CDP is rarely used
CCDP requires no browser support and works with all browsers equally
DProxy-based interception can modify requests, but CDP cannot
Attempts:
2 left
💡 Hint

Think about integration level and performance.