Bird
Raised Fist0
Selenium Pythontesting~10 mins

Browser-specific workarounds in Selenium Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the correct Selenium WebDriver for Chrome.

Selenium Python
from selenium import webdriver

browser = webdriver.[1]()
Drag options to blanks, or click blank then click option'
AEdge
BFirefox
CSafari
DChrome
Attempts:
3 left
💡 Hint
Common Mistakes
Using Firefox or Safari WebDriver when Chrome is needed.
Misspelling the WebDriver class name.
2fill in blank
medium

Complete the code to set a Chrome option to disable notifications.

Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('[1]')
browser = webdriver.Chrome(options=options)
Drag options to blanks, or click blank then click option'
A--disable-notifications
B--enable-notifications
C--start-maximized
D--headless
Attempts:
3 left
💡 Hint
Common Mistakes
Using --enable-notifications which enables notifications.
Using unrelated options like --headless.
3fill in blank
hard

Fix the error in the code to correctly switch to a new browser window.

Selenium Python
original_window = browser.current_window_handle
browser.find_element('link text', 'Open new window').click()
browser.[1](original_window)
Drag options to blanks, or click blank then click option'
Aswitch_to.frame
Bswitch_to.window
Cswitch_to.alert
Dswitch_to.default_content
Attempts:
3 left
💡 Hint
Common Mistakes
Using switch_to.frame which is for frames, not windows.
Using switch_to.alert which is for alerts.
4fill in blank
hard

Fill both blanks to create a workaround for a Firefox bug by setting a preference and launching Firefox with options.

Selenium Python
from selenium.webdriver.firefox.options import Options
options = Options()
options.set_preference('[1]', False)
options.[2] = True
browser = webdriver.Firefox(options=options)
Drag options to blanks, or click blank then click option'
Adom.webnotifications.enabled
Bheadless
Cservice_log_path
Ddisable_notifications
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect preference names like disable_notifications.
Confusing service_log_path with options.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that filters browser logs by level and formats messages.

Selenium Python
logs = {entry['timestamp']: entry['message'] for entry in browser.get_log('[1]') if entry['level'] == '[2]' and '[3]' in entry['message']}
Drag options to blanks, or click blank then click option'
Abrowser
BSEVERE
Cerror
Dperformance
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'performance' instead of 'browser' for log type.
Filtering by wrong log level or message content.

Practice

(1/5)
1. Why do we need browser-specific workarounds in Selenium tests?
easy
A. Because different browsers may behave differently and need special handling
B. Because Selenium only supports one browser at a time
C. Because browsers do not support JavaScript
D. Because tests run faster on some browsers

Solution

  1. Step 1: Understand browser differences

    Browsers like Chrome, Firefox, and Edge can behave differently in how they handle web elements or JavaScript.
  2. Step 2: Recognize need for workarounds

    To keep tests reliable, we write special code for each browser to handle these differences.
  3. Final Answer:

    Because different browsers may behave differently and need special handling -> Option A
  4. Quick Check:

    Browser differences = need workarounds [OK]
Hint: Remember: Different browsers act differently, so adjust tests [OK]
Common Mistakes:
  • Thinking Selenium supports only one browser at a time
  • Believing all browsers behave exactly the same
  • Assuming JavaScript is unsupported in browsers
2. Which is the correct way to detect the browser name in Selenium Python?
easy
A. driver.get_browser_name()
B. driver.getCapabilities('browser')
C. driver.browserName
D. driver.capabilities['browserName']

Solution

  1. Step 1: Recall Selenium's capability dictionary

    Selenium stores browser info in driver.capabilities, a dictionary with keys like 'browserName'.
  2. Step 2: Identify correct syntax

    Accessing driver.capabilities['browserName'] returns the browser name string correctly.
  3. Final Answer:

    driver.capabilities['browserName'] -> Option D
  4. Quick Check:

    Use capabilities dictionary for browser name [OK]
Hint: Use driver.capabilities['browserName'] to get browser name [OK]
Common Mistakes:
  • Using non-existent methods like get_browser_name()
  • Trying to access driver.browserName directly
  • Using wrong method names or parameters
3. What will the following code print if the browser is Firefox?
browser = driver.capabilities['browserName']
if browser == 'firefox':
    print('Use Firefox workaround')
else:
    print('Use default code')
medium
A. Use default code
B. Use Firefox workaround
C. KeyError
D. SyntaxError

Solution

  1. Step 1: Check browser value

    The variable browser is assigned driver.capabilities['browserName'], which is 'firefox' here.
  2. Step 2: Evaluate if condition

    Since browser == 'firefox' is True, the code prints 'Use Firefox workaround'.
  3. Final Answer:

    Use Firefox workaround -> Option B
  4. Quick Check:

    Browser is 'firefox' so prints Firefox workaround [OK]
Hint: Match browserName string exactly to choose workaround [OK]
Common Mistakes:
  • Assuming else branch runs for Firefox
  • Confusing case sensitivity in browser name
  • Expecting errors when key exists
4. Identify the error in this Selenium Python snippet for browser-specific workaround:
browser = driver.capabilities.browserName
if browser == 'chrome':
    print('Chrome workaround')
medium
A. driver.capabilities is a dictionary, so .browserName is invalid
B. Missing colon after if statement
C. Print statement syntax is wrong
D. No error, code is correct

Solution

  1. Step 1: Check how capabilities is accessed

    driver.capabilities is a dictionary, so keys must be accessed with ['key'], not dot notation.
  2. Step 2: Identify the error

    Using driver.capabilities.browserName causes an AttributeError because 'dict' has no attribute 'browserName'.
  3. Final Answer:

    driver.capabilities is a dictionary, so .browserName is invalid -> Option A
  4. Quick Check:

    Use ['browserName'] not .browserName [OK]
Hint: Access capabilities keys with brackets, not dot notation [OK]
Common Mistakes:
  • Using dot notation on dictionary objects
  • Ignoring Python syntax for dictionary access
  • Assuming no error in attribute access
5. You want to run a Selenium test that clicks a button differently on Chrome and Firefox due to a known issue. Which code snippet correctly implements this workaround?
hard
A. driver.find_element(By.ID, 'btn').click() # Works on all browsers without changes
B. if driver.capabilities['browserName'] == 'chrome': driver.execute_script("arguments[0].click();", driver.find_element(By.ID, 'btn')) else: driver.find_element(By.ID, 'btn').click()
C. browser = driver.capabilities['browserName'] if browser == 'chrome': driver.find_element(By.ID, 'btn').click() elif browser == 'firefox': driver.execute_script("arguments[0].click();", driver.find_element(By.ID, 'btn'))
D. browser = driver.capabilities.browserName if browser == 'firefox': driver.find_element(By.ID, 'btn').click() else: driver.execute_script("arguments[0].click();", driver.find_element(By.ID, 'btn'))

Solution

  1. Step 1: Detect browser correctly

    Use driver.capabilities['browserName'] to get the browser name safely.
  2. Step 2: Apply browser-specific click

    For Chrome, use normal click(). For Firefox, use JavaScript click workaround to avoid issues.
  3. Final Answer:

    Use if-elif with correct browser detection and click methods -> Option C
  4. Quick Check:

    Detect browser then apply specific click method [OK]
Hint: Detect browser, then choose click method accordingly [OK]
Common Mistakes:
  • Using dot notation on capabilities dictionary
  • Applying wrong click method for browser
  • Assuming one click method fits all browsers
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