Practice
1. What is the main purpose of using Network Interception with Selenium DevTools Protocol (CDP)?
easy
Solution
Step 1: Understand Network Interception
Network interception allows tests to watch and manipulate network traffic between the browser and server.Step 2: Identify the purpose in Selenium CDP context
Selenium's DevTools Protocol integration enables listening to and controlling network events during tests.Final Answer:
To monitor and control network requests and responses during tests -> Option CQuick Check:
Network interception = monitor and control traffic [OK]
Hint: Network interception means watching and controlling web traffic [OK]
Common Mistakes:
- Thinking it speeds up tests by skipping UI
- Confusing it with test data generation
- Assuming it replaces WebDriver
2. Which Java code snippet correctly creates a DevTools session to enable network interception in Selenium 4+?
easy
Solution
Step 1: Check correct DevTools session creation
In Selenium 4+, use driver.getDevTools() and then createSession() to start.Step 2: Verify enabling network interception
Use devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty())) to enable network events.Final Answer:
DevTools devTools = driver.getDevTools(); devTools.createSession(); devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty())); -> Option DQuick Check:
Use getDevTools(), createSession(), then send Network.enable [OK]
Hint: Use driver.getDevTools() then createSession() before enabling network [OK]
Common Mistakes:
- Trying to instantiate DevTools with new keyword
- Calling Network.enable() without devTools.send()
- Missing createSession() call
3. Given the following code snippet, what will be printed when a network request is intercepted?
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());
});
// Browser navigates to https://example.commedium
Solution
Step 1: Understand listener setup
The listener is added to Network.requestWillBeSent event, printing the URL of each request.Step 2: Predict output on navigating to example.com
When browser navigates, a request is sent to https://example.com/, triggering the listener and printing the URL.Final Answer:
Request URL: https://example.com/ -> Option AQuick Check:
Listener prints request URL on navigation [OK]
Hint: Listener prints URL of each request sent during navigation [OK]
Common Mistakes:
- Assuming listener won't trigger without explicit start
- Expecting null URL in request
- Thinking listener setup is incorrect
4. Identify the error in this Selenium Java code snippet for blocking image requests using CDP:
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.requestWillBeSent(), request -> {
if(request.getRequest().getUrl().endsWith(".png")) {
devTools.send(Network.setBlockedURLs(List.of(request.getRequest().getUrl())));
}
});medium
Solution
Step 1: Analyze listener behavior
The listener calls setBlockedURLs every time a request ends with .png, causing repeated calls.Step 2: Understand correct usage of setBlockedURLs
setBlockedURLs should be called once with all URLs to block, not repeatedly inside the listener.Final Answer:
Calling setBlockedURLs inside the listener causes repeated blocking calls -> Option AQuick Check:
setBlockedURLs called repeatedly inside listener is wrong [OK]
Hint: Call setBlockedURLs once, not inside each request event [OK]
Common Mistakes:
- Calling setBlockedURLs repeatedly inside listener
- Forgetting to create session before enabling network
- Misusing string methods for URL filtering
5. You want to modify the response body of a JSON API call during a Selenium test using CDP. Which approach correctly achieves this?
hard
Solution
Step 1: Understand response modification with CDP
To modify a response, intercept it, get the body, change it, and continue with the new content.Step 2: Identify correct event and method usage
Use Network.requestIntercepted to detect response, fetch body, then Network.continueInterceptedRequest to send modified response.Final Answer:
Enable Network.requestIntercepted event, fetch response body, modify it, then use Network.continueInterceptedRequest with modified body -> Option BQuick Check:
Modify response by intercepting and continuing with new body [OK]
Hint: Intercept response, modify body, then continue intercepted request [OK]
Common Mistakes:
- Trying to modify request instead of response
- Blocking URL instead of modifying response
- Changing DOM instead of network response
