We check if elements are visible, clickable, or selected to make sure our tests interact with the right parts of a webpage.
Checking element state (displayed, enabled, selected) in Selenium Python
element.is_displayed() element.is_enabled() element.is_selected()
is_displayed() returns True if the element is visible on the page.
is_enabled() returns True if the element can be interacted with (not disabled).
is_selected() returns True if the element is selected (mainly for checkboxes, radio buttons, and options).
button = driver.find_element(By.ID, "submit") print(button.is_enabled())
checkbox = driver.find_element(By.NAME, "subscribe") print(checkbox.is_selected())
popup = driver.find_element(By.CLASS_NAME, "popup-message") print(popup.is_displayed())
This script opens a webpage with a checkbox, checks if it is visible, enabled, and selected before and after clicking it.
from selenium import webdriver from selenium.webdriver.common.by import By import time # Setup driver (make sure chromedriver is in PATH) driver = webdriver.Chrome() driver.get("https://www.w3schools.com/howto/howto_css_custom_checkbox.asp") # Find checkbox element checkbox = driver.find_element(By.CSS_SELECTOR, "input[type='checkbox']") # Check if checkbox is displayed print(f"Checkbox displayed: {checkbox.is_displayed()}") # Check if checkbox is enabled print(f"Checkbox enabled: {checkbox.is_enabled()}") # Check if checkbox is selected print(f"Checkbox selected before click: {checkbox.is_selected()}") # Click the checkbox to select it checkbox.click() # Check if checkbox is selected after click print(f"Checkbox selected after click: {checkbox.is_selected()}") # Close the browser driver.quit()
Always wait for elements to load before checking their state to avoid errors.
Use explicit waits in real tests to handle dynamic pages.
is_selected() works mainly for checkboxes, radio buttons, and options.
Use is_displayed() to check if an element is visible.
Use is_enabled() to check if an element can be interacted with.
Use is_selected() to check if checkboxes or radio buttons are selected.
Practice
Solution
Step 1: Understand the purpose of
This method returns True if the element is visible to the user on the page.is_displayed()Step 2: Compare with other methods
is_enabled()checks if the element can be interacted with,is_selected()checks selection state, andis_visible()is not a valid Selenium method.Final Answer:
is_displayed() -> Option DQuick Check:
Visibility check = is_displayed() [OK]
- Confusing is_enabled() with visibility
- Using is_selected() for visibility
- Assuming is_visible() exists in Selenium
Solution
Step 1: Recall Selenium Python method names
In Selenium Python, the method to check selection isis_selected()with underscores and parentheses.Step 2: Identify incorrect syntax
selected()andselectedare invalid;isSelected()is Java style, not Python.Final Answer:
checkbox.is_selected() -> Option AQuick Check:
Check selected? Use is_selected() [OK]
- Using Java method style isSelected() in Python
- Omitting parentheses after method name
- Using property 'selected' instead of method
button = driver.find_element(By.ID, 'submit') print(button.is_displayed()) print(button.is_enabled())
Solution
Step 1: Understand is_displayed() output
Since the button is visible,is_displayed()returns True.Step 2: Understand is_enabled() output
The button is disabled, sois_enabled()returns False.Final Answer:
True\nFalse -> Option AQuick Check:
Visible = True, Enabled = False [OK]
- Assuming disabled means not visible
- Mixing up is_displayed() and is_enabled() results
- Expecting both to be True for visible button
checkbox = driver.find_element(By.NAME, 'agree')
if checkbox.selected():
print('Selected')
else:
print('Not selected')
What is the error here?Solution
Step 1: Check method name for selection
The correct method to check selection in Selenium Python isis_selected(), notselected().Step 2: Verify other code parts
Parentheses afterfind_elementare correct, locator looks valid, and print statements are properly quoted.Final Answer:
selected() is not a valid method; should use is_selected() -> Option CQuick Check:
Use is_selected() method for checkbox state [OK]
- Using selected() instead of is_selected()
- Confusing method names with Java syntax
- Ignoring method parentheses
button = driver.find_element(By.ID, 'save')
Solution
Step 1: Identify conditions for clicking
The button must be visible (is_displayed()) and enabled (is_enabled()) to be safely clicked.Step 2: Analyze each option
if button.is_displayed() and button.is_enabled(): button.click() uses both conditions with 'and', which is correct. if button.is_selected() and button.is_enabled(): button.click() wrongly usesis_selected()which is for checkboxes/radios. if button.is_displayed() or button.is_enabled(): button.click() uses 'or' which may click if only one condition is true. if button.is_enabled(): button.click() checks only enabled, ignoring visibility.Final Answer:
if button.is_displayed() and button.is_enabled():\n button.click() -> Option BQuick Check:
Click only if visible AND enabled [OK]
- Using or instead of and for conditions
- Checking is_selected() for buttons
- Ignoring visibility check before clicking
Ready to prove it?
Pass the test and this pattern moves unknown
