Bird
Raised Fist0
Selenium Pythontesting~20 mins

Network log capture in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Network Log Capture 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 network log capture code?
Consider the following Python Selenium code snippet that captures network logs using Chrome DevTools Protocol (CDP). What will be printed by the last print statement?
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

options = Options()
options.add_argument('--headless=new')

caps = DesiredCapabilities.CHROME.copy()
caps['goog:loggingPrefs'] = {'performance': 'ALL'}

service = Service()
driver = webdriver.Chrome(service=service, options=options, desired_capabilities=caps)

driver.get('https://example.com')

logs = driver.get_log('performance')

count = 0
for entry in logs:
    message = entry['message']
    if 'Network.responseReceived' in message:
        count += 1

print(count)
driver.quit()
ARaises a WebDriverException because DesiredCapabilities is deprecated
BPrints the number of network responses received during page load, typically a positive integer like 5 or more
CRaises a KeyError because 'message' key does not exist in log entries
DPrints 0 because 'performance' logs are not enabled by default
Attempts:
2 left
💡 Hint
Check how performance logging is enabled and what keys exist in the log entries.
❓ assertion
intermediate
1:30remaining
Which assertion correctly verifies a network request URL in Selenium logs?
You have captured performance logs in Selenium and want to assert that a request to 'https://api.example.com/data' was made. Which assertion code snippet correctly checks this?
Selenium Python
logs = driver.get_log('performance')
urls = []
for entry in logs:
    message = json.loads(entry['message'])['message']
    if message['method'] == 'Network.requestWillBeSent':
        urls.append(message['params']['request']['url'])
Aassert any('https://api.example.com/data' in url for url in urls)
Bassert 'https://api.example.com/data' in urls
Cassert all('https://api.example.com/data' == url for url in urls)
Dassert urls.index('https://api.example.com/data') > 0
Attempts:
2 left
💡 Hint
Check how to verify if at least one URL matches the target string.
🔧 Debug
advanced
2:30remaining
Why does this Selenium network log capture code raise a JSONDecodeError?
This code snippet tries to parse network logs but raises json.decoder.JSONDecodeError. Identify the cause.
Selenium Python
import json
logs = driver.get_log('performance')
for entry in logs:
    message = json.loads(entry['message'])
    print(message['message']['method'])
Aentry['message'] is a string containing nested JSON; json.loads parses only the outer string, inner 'message' is still a string, causing error
Bentry['message'] is not a valid JSON string, causing JSONDecodeError
Cdriver.get_log('performance') returns empty list, so loop never runs and error is elsewhere
Djson module is not imported correctly, causing JSONDecodeError
Attempts:
2 left
💡 Hint
Check the structure of the 'message' field in performance logs.
❓ framework
advanced
2:30remaining
Which Selenium WebDriver setup correctly enables network log capture with Chrome in Python?
Select the code snippet that correctly configures Chrome WebDriver to capture network logs using performance logging.
A
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service()
driver = webdriver.Chrome(service=service)
driver.execute_cdp_cmd('Network.enable', {})
B
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
C
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.CHROME.copy()
caps['goog:loggingPrefs'] = {'performance': 'ALL'}

options = Options()
options.add_argument('--headless=new')

service = Service()
driver = webdriver.Chrome(service=service, options=options, desired_capabilities=caps)
D
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--enable-logging')
driver = webdriver.Chrome(options=options)
Attempts:
2 left
💡 Hint
Check how to enable performance logging via DesiredCapabilities.
🧠 Conceptual
expert
3:00remaining
What is the main limitation of capturing network logs via Selenium's performance logging?
Choose the most accurate statement about the limitations of using Selenium's performance logging to capture network traffic.
APerformance logging captures all network traffic including WebSocket frames and browser cache hits without any filtering limitations
BPerformance logging disables browser caching, causing all resources to be fetched from the network every time
CPerformance logging requires manual parsing of raw TCP packets, making it unsuitable for HTTP-level analysis
DPerformance logging may miss some network events due to buffering and does not provide full HAR (HTTP Archive) data like dedicated proxy tools
Attempts:
2 left
💡 Hint
Consider what data Selenium's performance logs provide compared to specialized network tools.

Practice

(1/5)
1. What is the main purpose of capturing network logs in Selenium tests?
easy
A. To see the communication between browser and server during tests
B. To speed up the test execution time
C. To change the browser's UI elements
D. To generate random test data automatically

Solution

  1. Step 1: Understand network logs in Selenium

    Network logs capture the details of requests and responses between the browser and server during test execution.
  2. Step 2: Identify the main purpose

    This helps testers verify if the correct URLs are called and if responses are successful.
  3. Final Answer:

    To see the communication between browser and server during tests -> Option A
  4. Quick Check:

    Network logs show browser-server communication [OK]
Hint: Network logs = browser-server communication details [OK]
Common Mistakes:
  • Thinking network logs speed up tests
  • Confusing UI changes with network logs
  • Assuming network logs generate test data
2. Which Chrome option enables performance logging to capture network events in Selenium?
easy
A. "args": ["--disable-extensions"]
B. "goog:loggingPrefs": {"performance": "ALL"}
C. "prefs": {"download.default_directory": "/tmp"}
D. "chromeOptions": {"headless": true}

Solution

  1. Step 1: Identify the correct Chrome option for logging

    Performance logging is enabled by setting "goog:loggingPrefs" with "performance" set to "ALL".
  2. Step 2: Understand other options

    Other options like headless mode or disabling extensions do not enable network log capture.
  3. Final Answer:

    "goog:loggingPrefs": {"performance": "ALL"} -> Option B
  4. Quick Check:

    Enable performance logs with goog:loggingPrefs [OK]
Hint: Use goog:loggingPrefs with performance ALL to capture network logs [OK]
Common Mistakes:
  • Confusing headless mode with logging
  • Using download preferences for network logs
  • Disabling extensions instead of enabling logs
3. Given this code snippet, what will be printed?
logs = driver.get_log('performance')
for entry in logs:
    message = json.loads(entry['message'])['message']
    if message['method'] == 'Network.responseReceived':
        print(message['params']['response']['url'])
medium
A. All browser console error messages
B. Only URLs of failed network requests
C. All URLs of network responses received during the test
D. List of all clickable elements on the page

Solution

  1. Step 1: Understand the log parsing code

    The code reads performance logs, filters for 'Network.responseReceived' events, and prints the response URLs.
  2. Step 2: Identify what is printed

    It prints all URLs for network responses received, regardless of success or failure.
  3. Final Answer:

    All URLs of network responses received during the test -> Option C
  4. Quick Check:

    Code prints URLs from Network.responseReceived events [OK]
Hint: Network.responseReceived logs contain all response URLs [OK]
Common Mistakes:
  • Assuming only failed URLs are printed
  • Confusing network logs with console errors
  • Thinking it lists page elements
4. What is wrong with this code snippet for capturing network logs?
options = webdriver.ChromeOptions()
options.set_capability('loggingPrefs', {'performance': 'ALL'})
driver = webdriver.Chrome(options=options)
logs = driver.get_log('performance')
medium
A. The capability key should be 'goog:loggingPrefs', not 'loggingPrefs'
B. The ChromeOptions object cannot be used with Chrome driver
C. The get_log method does not exist in Selenium
D. Performance logs cannot be captured in Chrome

Solution

  1. Step 1: Check capability key correctness

    The correct key to enable performance logging is 'goog:loggingPrefs', not 'loggingPrefs'.
  2. Step 2: Verify other statements

    ChromeOptions can be used with Chrome driver, get_log exists, and performance logs can be captured.
  3. Final Answer:

    The capability key should be 'goog:loggingPrefs', not 'loggingPrefs' -> Option A
  4. Quick Check:

    Use 'goog:loggingPrefs' to enable performance logs [OK]
Hint: Use 'goog:loggingPrefs' key for performance logging [OK]
Common Mistakes:
  • Using wrong capability key
  • Thinking ChromeOptions is incompatible
  • Believing get_log method is missing
5. How can you verify in Selenium that a specific API call to 'https://api.example.com/data' returned status code 200 using network logs?
hard
A. Use driver.execute_script to intercept network calls directly
B. Use driver.get_log('browser') and search for the URL string
C. Check page source for the URL and assume status 200 if found
D. Parse performance logs, find 'Network.responseReceived' events, check if response URL matches and status is 200

Solution

  1. Step 1: Capture and parse performance logs

    Enable performance logging and get logs with driver.get_log('performance').
  2. Step 2: Filter 'Network.responseReceived' events and check URL and status

    Look for events where response URL matches 'https://api.example.com/data' and verify status code is 200.
  3. Final Answer:

    Parse performance logs, find 'Network.responseReceived' events, check if response URL matches and status is 200 -> Option D
  4. Quick Check:

    Check responseReceived events for URL and status 200 [OK]
Hint: Filter Network.responseReceived logs by URL and status code [OK]
Common Mistakes:
  • Using browser logs instead of performance logs
  • Assuming URL presence means status 200
  • Trying to intercept network calls with execute_script
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard