Friday, 19 August 2016

Selenium2: isDisplayed Vs isEnabled

In my previous posts, I explained about isDisplayed and isEnabled methods. In this post I am going to explain the difference between isDisplayed and isEnabled methods.


Index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

<body>
 <div id="div1">
  <h1 id="header1">Simple application to demonstrate Selenium
   webdriver</h1>
 </div>

 <div id="div2">
  <p id="para1">WebDriver interface provides number of methods to
   locate elements in a web page. You can locate an element by using
   class name, id, name, linktext etc.,</p>

  <input type="hidden" name="abc" value="10" id="hiddenFiled1" />
 </div>
</body>
</html>


Assume index.jsp is available at url “http://localhost:8080/application”.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class App {
 public static void main(String[] args) {
  WebDriver driver = new FirefoxDriver();
  driver.get("http://localhost:8080/application");

  WebElement ele1 = driver.findElement(By.id("header1"));
  WebElement ele2 = driver.findElement(By.id("hiddenFiled1"));

  System.out.println("is ele1 displayed on webpage "+ ele1.isDisplayed());
  System.out.println("is ele2 displayed on webpage " + ele2.isDisplayed());
  
  System.out.println("is ele1 enabled on webpage "+ ele1.isEnabled());
  System.out.println("is ele2 enabled on webpage " + ele2.isEnabled());

  driver.close();
 }
}


Output

is ele1 displayed on webpage true
is ele2 displayed on webpage false
is ele1 enabled on webpage true
is ele2 enabled on webpage true


input type="hidden" name="abc" value="10" id="hiddenFiled1" />
Observe the output, since element with id hiddenField1 is hidden from web page, so isDisplayed method return false, where as inEnabled method return true.

Update index.jsp like below.
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

<body>
 <script>
  window.onload = function() {
   var radios = document.getElementsByName('o1');
   for (i = 0; i < radios.length; i++)
    radios[i].onclick = checkFire;
  };

  function checkFire(e) {
   var fires = document.getElementById('relocate');
   var evt = e || window.event;
   var target = evt.target || evt.srcElement;
   if (target.checked && target.id === 'yes')
    fires.disabled = false;
   else {
    fires.checked = false;
    fires.disabled = true;
   }
  }
 </script>

 <div>
  Do you like programming<input type="radio" name="o1" id="yes" />Yes <input
   type="radio" name="o1" id="no" />No
 </div>
 <div id="job">
  <input type="checkbox" name="e1" id="relocate" disabled />Are you
  intrested to relocate
 </div>

</body>
</html>


index.jsp generates above jsp page. By default check box is disabled.

<input type="checkbox" name="e1" id="relocate" disabled />

Checkbox will be enabled once you select the radio button yes.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class App {
 public static void main(String[] args) {
  WebDriver driver = new FirefoxDriver();
  driver.get("http://localhost:8080/application");

  WebElement yesRadioButtion = driver.findElement(By.id("yes"));
  WebElement relocateCheckBox = driver.findElement(By.id("relocate"));
  
  System.out.println("Is checkbox displayed " + relocateCheckBox.isDisplayed());
  System.out.println("Is checkbox enabled " + relocateCheckBox.isEnabled());
  
  yesRadioButtion.click();
  
  System.out.println("\nSelected the yes check box\n");
  
  System.out.println("Is checkbox displayed " + relocateCheckBox.isDisplayed());
  System.out.println("Is checkbox enabled " + relocateCheckBox.isEnabled());
  
  driver.close();
 }
}


Output
Is checkbox displayed true
Is checkbox enabled false

Selected the yes check box

Is checkbox displayed true
Is checkbox enabled true






Previous                                                 Next                                                 Home

No comments:

Post a Comment