Bird
Raised Fist0
Selenium Pythontesting~20 mins

Find element by CSS selector in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
CSS Selector Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
📝 Syntax
intermediate
2:00remaining
Find element using CSS selector syntax
What is the output of this code snippet when trying to find an element with class button-primary?
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://example.com')

button = browser.find_element(By.CSS_SELECTOR, '.button-primary')
print(button.tag_name)
browser.quit()
APrints the tag name of the first element with class 'button-primary', e.g., 'button'
BRaises a SyntaxError due to incorrect CSS selector syntax
CRaises a NoSuchElementException if no element with class 'button-primary' is found
DPrints the text content of the element instead of the tag name
Attempts:
2 left
💡 Hint
Remember that find_element returns the first matching element and By.CSS_SELECTOR expects a valid CSS selector string.
🧠 Conceptual
intermediate
2:00remaining
Understanding CSS selector specificity in Selenium
Which CSS selector will find all <input> elements with attribute type='text' inside a form with id loginForm?
A#loginForm input[type='text']
Binput#loginForm[type='text']
Cinput[type='text'] > #loginForm
Dform input[type=text]#loginForm
Attempts:
2 left
💡 Hint
Think about how CSS selectors target elements by id, tag, and attribute.
❓ rendering
advanced
2:00remaining
What happens when using an invalid CSS selector in Selenium?
Consider this code snippet trying to find an element with an invalid CSS selector. What error will Selenium raise?
Selenium Python
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('https://example.com')

browser.find_element(By.CSS_SELECTOR, 'div#main > > p')
browser.quit()
Aselenium.common.exceptions.ElementNotInteractableException
Bselenium.common.exceptions.InvalidSelectorException
CNo error, returns None
Dselenium.common.exceptions.NoSuchElementException
Attempts:
2 left
💡 Hint
Invalid CSS syntax causes a specific Selenium exception.
❓ selector
advanced
2:00remaining
Selecting nested elements with CSS selectors in Selenium
Which CSS selector correctly finds all <li> elements that are direct children of <ul> with class menu?
Aul > .menu li
Bul.menu li
Cli > ul.menu
Dul.menu > li
Attempts:
2 left
💡 Hint
The '>' combinator selects direct children only.
❓ accessibility
expert
3:00remaining
Using CSS selectors to find elements with ARIA attributes in Selenium
Which CSS selector will find all elements with the ARIA role button that are also focusable (have tabindex='0')?
A[role=button][tabindex=0]
B[aria-role='button'][tabindex='0']
C[role='button'][tabindex='0']
D[role='button'] > [tabindex='0']
Attempts:
2 left
💡 Hint
ARIA roles use the attribute 'role', not 'aria-role'. Also, attribute values should be quoted strings.

Practice

(1/5)
1. Which method is used in Selenium Python to find an element by CSS selector?
easy
A. driver.find_element_by_name("selector")
B. driver.find_element(By.CSS_SELECTOR, "selector")
C. driver.find_element_by_xpath("selector")
D. driver.find_element_by_id("selector")

Solution

  1. Step 1: Understand Selenium element finding methods

    Selenium provides different methods to find elements, including by ID, name, XPath, and CSS selector.
  2. Step 2: Identify the correct method for CSS selector

    The method to find by CSS selector is driver.find_element(By.CSS_SELECTOR, "selector").
  3. Final Answer:

    driver.find_element(By.CSS_SELECTOR, "selector") -> Option B
  4. Quick Check:

    Find element by CSS selector = driver.find_element(By.CSS_SELECTOR, "selector") [OK]
Hint: Use By.CSS_SELECTOR with find_element for CSS selectors [OK]
Common Mistakes:
  • Using find_element_by_id for CSS selectors
  • Confusing XPath with CSS selector method
  • Using deprecated find_element_by_* methods
2. Which of the following is the correct syntax to find an element with class name "btn-primary" using CSS selector in Selenium Python?
easy
A. driver.find_element(By.CSS_SELECTOR, ".btn-primary")
B. driver.find_element(By.CSS_SELECTOR, "#btn-primary")
C. driver.find_element(By.CSS_SELECTOR, "btn-primary")
D. driver.find_element(By.CSS_SELECTOR, "*btn-primary")

Solution

  1. Step 1: Recall CSS selector for class names

    In CSS selectors, a class is selected by prefixing the class name with a dot (.)
  2. Step 2: Match the correct syntax

    To select class "btn-primary", use ".btn-primary" inside find_element.
  3. Final Answer:

    driver.find_element(By.CSS_SELECTOR, ".btn-primary") -> Option A
  4. Quick Check:

    Class selector = .classname [OK]
Hint: Use dot (.) before class name in CSS selector [OK]
Common Mistakes:
  • Using # instead of . for class selectors
  • Omitting the dot before class name
  • Using invalid wildcard * before class name
3. What will the following Selenium Python code select?
element = driver.find_element(By.CSS_SELECTOR, "div#main > ul.items > li.active")
medium
A. The first <li> element with class 'active' inside <ul> with class 'items' inside <div> with id 'main'
B. All <li> elements inside any <ul> inside any <div>
C. The <div> element with id 'main' only
D. The <ul> element with class 'items' only

Solution

  1. Step 1: Break down the CSS selector

    The selector targets a
  2. element with class 'active' that is a direct child of a <ul> with class 'items', which is a direct child of a <div> with id 'main'.
  3. Step 2: Understand the element selected

    It selects the first matching
  4. element with class 'active' inside the specified structure.
  5. Final Answer:

    The first <li> element with class 'active' inside <ul> with class 'items' inside <div> with id 'main' -> Option A
  6. Quick Check:

    CSS selector matches nested elements exactly [OK]
Hint: Read CSS selector from right to left for nested elements [OK]
Common Mistakes:
  • Thinking it selects all <li> elements, not just with class 'active'
  • Ignoring the direct child (>) combinators
  • Confusing id (#) and class (.) selectors
4. Identify the error in this Selenium Python code snippet:
element = driver.find_element(By.CSS_SELECTOR, "#content .item[active]")
medium
A. The ID selector #content should be a class selector
B. The method find_element does not accept CSS selectors
C. The CSS selector should use double quotes inside single quotes
D. The attribute selector [active] is missing an equals sign and value

Solution

  1. Step 1: Analyze the attribute selector syntax

    The selector uses [active] which means attribute 'active' must be present, but usually attributes require a value like [active="true"].
  2. Step 2: Identify the correct attribute selector format

    To check for attribute presence only, [active] is valid, but if a value is expected, it must be [active="value"]. Here, likely a value is missing.
  3. Final Answer:

    The attribute selector [active] is missing an equals sign and value -> Option D
  4. Quick Check:

    Attribute selectors need correct syntax [OK]
Hint: Attribute selectors need = and value unless checking presence only [OK]
Common Mistakes:
  • Assuming [active] always works without value
  • Confusing ID (#) and class (.) selectors
  • Using wrong quotes inside CSS selector string
5. You want to find all <input> elements inside a form with id "loginForm" that have both classes "input-field" and "required". Which CSS selector should you use with Selenium Python's find_elements method?
hard
A. "form#loginForm input#input-field#required"
B. "form#loginForm input .input-field .required"
C. "form#loginForm input.input-field.required"
D. "form#loginForm > input > .input-field > .required"

Solution

  1. Step 1: Understand CSS selector for multiple classes

    To select elements with multiple classes, chain class selectors without spaces, e.g., .input-field.required.
  2. Step 2: Combine with tag and parent selectors

    Use form#loginForm to select the form by id, then space to select descendants, then input.input-field.required for inputs with both classes.
  3. Final Answer:

    "form#loginForm input.input-field.required" -> Option C
  4. Quick Check:

    Multiple classes chained without spaces [OK]
Hint: Chain multiple classes without spaces in CSS selector [OK]
Common Mistakes:
  • Adding spaces between multiple classes (selects descendants instead)
  • Using multiple IDs on one element (invalid)
  • Using child combinator (>) incorrectly for nested elements
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