How to check visibility of web elements using various types of looping and conditional commands in WebDriver:
Previously in the series, we discussed about 
WebDriver’s Select class which is primarily used to handle web elements like dropdowns and selecting various options under the dropdowns.
Moving ahead in the 
Selenium series,
 we would be discussing about the various types of looping and 
conditional commands in WebDriver like isSelected(), isEnabled() and 
isDispalyed(). These methods are used to determine the visibility scope 
for the web elements.
So
 let us start with a brief introduction – WebDriver has a W3C 
specification that details out the information about the different 
visibility preferences based out on the types of the web elements upon 
which the actions are to be performed.
WebDriver facilitates the 
user with the following methods to check the visibility of the web 
elements. These web elements can be buttons, drop boxes, checkboxes, 
radio buttons, labels etc.
- isDisplayed()
- isSelected()
- isEnabled()
For an improved understanding, let us discuss the aforementioned methods with code examples.
As
 a specimen, we would be using the “google.com” as an application under 
test and the “Learning_Selenium” project created in the previous 
tutorials for script generation.
Scenario to be automated
- Launch the web browser and open the application under test – http://google.com
- Verify the web page title
- Verify if the “Google Search” button is displayed
- Enter the keyword in the “Google Search” text box by which we would want to make the request
- Verify that the “Search button” is displayed and enabled
- Based on visibility of the Search button, click on the search button
What You Will Learn: 
[show] 
WebDriver Code
Step 1: Create a new java class named as “VisibilityConditions” under the “Learning_Selenium” project.
Step 2: Copy and paste the below code in the “VisibilityConditions.java” class.
Below is the test script that is equivalent to the above-mentioned scenario:
| 1 | importorg.openqa.selenium.By; | 
 
| 2 | importorg.openqa.selenium.WebDriver; | 
 
| 3 | importorg.openqa.selenium.WebElement; | 
 
| 4 | importorg.openqa.selenium.firefox.FirefoxDriver; | 
 
| 6 | publicclassVisibilityConditions { | 
 
| 12 |        publicstaticvoidmain(String[] args) { | 
 
| 15 |               WebDriver driver = newFirefoxDriver(); | 
 
| 16 |               String appUrl = "https://google.com"; | 
 
| 22 |               driver.manage().window().maximize(); | 
 
| 25 |               String expectedTitle = "Google"; | 
 
| 28 |               String actualTitle = driver.getTitle(); | 
 
| 31 |               if(expectedTitle.equals(actualTitle)) | 
 
| 33 |                      System.out.println("Verification Successful - The correct title is displayed on the web page."); | 
 
| 37 |                      System.out.println("Verification Failed - An incorrect title is displayed on the web page."); | 
 
| 41 |               booleansubmitbuttonPresence=driver.findElement(By.id("gbqfba")).isDisplayed(); | 
 
| 42 |               System.out.println(submitbuttonPresence); | 
 
| 45 |               WebElement searchTextBox = driver.findElement(By.id("gbqfq")); | 
 
| 46 |               searchTextBox.clear(); | 
 
| 47 |               searchTextBox.sendKeys("Selenium"); | 
 
| 50 |               booleansearchIconPresence = driver.findElement(By.id("gbqfb")).isDisplayed(); | 
 
| 51 |               booleansearchIconEnabled = driver.findElement(By.id("gbqfb")).isEnabled(); | 
 
| 53 |               if(searchIconPresence==true&& searchIconEnabled==true) | 
 
| 56 |                      WebElement searchIcon = driver.findElement(By.id("gbqfb")); | 
 
| 62 |               System.out.println("Test script executed successfully."); | 
 
 
 
Code Walkthrough
 
 
     
Following are the ways in which we ascertain the presence of web elements on the web page.
boolean submitbuttonPresence=driver.findElement(By.id(“gbqfba”)).isDisplayed();
 
isDispalyed()
isDisplayed()
 is the method used to verify presence of a web element within the 
webpage. The method is designed to result from a Boolean value with each
 success and failure. The method returns a “true” value if the specified
 web element is present on the web page and a “false” value if the web 
element is not present on the web page.
Thus the above code 
snippet verifies for the presence of submit button on the google web 
page and returns a true value if the submit button is present and 
visible else returns a false value if the submit button is not present 
on the web page.
boolean searchIconEnabled = driver.findElement(By.id(“gbqfb”)).isEnabled();
The method deals with the visibility of all kinds of web elements not just limiting to any one type.
isEnabled()
isEnabled()
 is the method used to verify if the web element is enabled or disabled 
within the webpage. Like isDisplayed() method, it is designed to result 
in a Boolean value with each success and failure. The method returns a 
“true” value if the specified web element is enabled on the web page and
 a “false” value if the web element is not enabled (state of being 
disabled) on the web page.
Thus the above code snippet verifies if the submit button is enabled or not and returns a Boolean value depending on the result.
The
 isEnabled() method is significant in scenarios where we want to 
ascertain that only if “Condition A” is fulfilled, then the 
element(principally button) is enabled. Refer the following illustration
 for the same.
 
 
     
In the above figure, Register button is enabled only when the agreement checkbox is selected.
Akin
 to above methods, we have a method referenced as “isSelected()” which 
tests if the specified web element is selected or not.
boolean searchIconSelected = driver.findElement(By.id(“male”)).isSelected();
isSelected()
isSelected()
 is the method used to verify if the web element is selected or not. 
isSelected() method is pre-dominantly used with radio buttons, dropdowns
 and checkboxes. Analogous to above methods, it is designed to result a 
Boolean value with each success and failure.
Thus the above code 
snippet verifies if the male radio button is selected or not and returns
 a Boolean value depending on the result. Refer the following image for 
the same.
Conclusion
In
 this tutorial, we tried to make you acquainted with the WebDriver’s 
looping and conditional operations. These conditional methods often deal
 with almost all types of visibility options for web elements.
Article Summary:
- WebDriver
 has a W3C specification that details out the information about the 
different visibility preferences based out on the types of the web 
elements.
- isDisplayed() is the method used to verify a presence 
of a web element within the webpage. The method returns a “true” value 
if the specified web element is present on the web page and a “false” 
value if the web element is not present on the web page.
- isDisplayed() is capable to check for the presence of all kinds of web elements available.
- isEnabled() is the method used to verify if the web element is enabled or disabled within the webpage.
- isEnabled() is primarily used with buttons.
- isSelected()
 is the method used to verify if the web element is selected or not. 
isSelected() method is predominantly used with radio buttons, dropdowns 
and checkboxes.
Next Tutorial #15:
 While working on web applications, often we are re-directed to 
different web pages by refreshing the entire web page and re-loading the
 new web elements. At times there can be Ajax calls as well. Thus, a 
time lag can be seen while reloading the web pages and reflecting the 
web elements. 
Thus, our next tutorial in-line is all about dealing with such time lags by using implicit and explicit waits.
Note for the Readers: Till then, the reader can automate and test the visibility scope for the web elements using WebDriver’s methods.