What if your tests could avoid hidden traps and only click buttons when they're truly ready?
Why Checking state (isDisplayed, isEnabled, isSelected) in Selenium Java? - Purpose & Use Cases
Imagine you have a big web page with many buttons, checkboxes, and images. You want to make sure certain buttons are visible, enabled, or selected before clicking them. Doing this by looking at the screen and guessing is like trying to find a needle in a haystack.
Manually checking if elements are visible or enabled is slow and tiring. You might miss something or make mistakes because the page changes quickly. It's easy to click a button that's hidden or disabled, causing errors and wasting time.
Using methods like isDisplayed(), isEnabled(), and isSelected() in Selenium lets your test automatically check the state of elements. This means your test only acts when the element is ready, making your tests smarter and more reliable.
if (element != null) { // guess if element is visible or enabled clickButton(); }
if (element.isDisplayed() && element.isEnabled()) {
element.click();
}This lets your tests interact only with elements that are ready, avoiding errors and making your automation trustworthy and fast.
When testing a login page, you want to click the login button only if it is visible and enabled. Using isDisplayed() and isEnabled() ensures your test won't fail by clicking a hidden or disabled button.
Manual checks are slow and error-prone.
State-check methods automate and improve test reliability.
Tests become smarter by acting only on ready elements.
Practice
Solution
Step 1: Understand the purpose of
This method checks if an element is visible on the page, meaning it is rendered and not hidden.isDisplayed()Step 2: Compare with other methods
isEnabled()checks if the element can be interacted with,isSelected()checks selection state, andgetText()returns text content, so they don't check visibility.Final Answer:
isDisplayed() -> Option DQuick Check:
Visibility check = isDisplayed() [OK]
- Confusing isDisplayed() with isEnabled()
- Using isSelected() for visibility
- Thinking getText() checks visibility
Solution
Step 1: Recall the method to check selection state
The correct method to check if a checkbox or radio button is selected isisSelected().Step 2: Verify syntax correctness
checkbox.isSelected();is valid Java syntax.getSelected()does not exist, and the others check different states.Final Answer:
checkbox.isSelected(); -> Option AQuick Check:
Check selection = isSelected() [OK]
- Using getSelected() which is invalid
- Confusing isDisplayed() with isSelected()
- Using isEnabled() to check selection
WebElement button = driver.findElement(By.id("submitBtn"));
System.out.println(button.isDisplayed());
System.out.println(button.isEnabled());Solution
Step 1: Understand isDisplayed() output
The button is visible, soisDisplayed()returnstrue.Step 2: Understand isEnabled() output
The button is disabled, soisEnabled()returnsfalse.Final Answer:
true false -> Option BQuick Check:
Visible = true, Enabled = false [OK]
- Assuming disabled means not displayed
- Mixing up isDisplayed() and isEnabled() results
- Expecting both to be true always
WebElement radio = driver.findElement(By.name("gender"));
if(radio.isEnabled()) {
System.out.println("Selected");
} else {
System.out.println("Not Selected");
}Solution
Step 1: Understand the purpose of isEnabled() vs isSelected()
isEnabled()checks if the element can be interacted with, not if it is selected.Step 2: Identify correct method to check selection
To check if a radio button is selected,isSelected()must be used.Final Answer:
Should use isSelected() instead of isEnabled() -> Option AQuick Check:
Selection check = isSelected() [OK]
- Using isEnabled() to check selection
- Assuming enabled means selected
- Ignoring method purpose differences
Solution
Step 1: Understand the required conditions
The checkbox must be visible (isDisplayed()), enabled (isEnabled()), and not selected (!isSelected()).Step 2: Analyze each option
if(checkbox.isDisplayed() && checkbox.isEnabled() && !checkbox.isSelected()) { checkbox.click(); } uses AND (&&) to combine all correct conditions and negatesisSelected()to ensure it is not selected before clicking.Final Answer:
if(checkbox.isDisplayed() && checkbox.isEnabled() && !checkbox.isSelected()) { checkbox.click(); } -> Option CQuick Check:
Use AND for all true and NOT for selection [OK]
- Using OR (||) instead of AND (&&)
- Not negating isSelected() when needed
- Clicking when checkbox is disabled or hidden
Ready to prove it?
Pass the test and this pattern moves unknown
