Like us on Facebook

LightBlog

July 30, 2015

How To Test For Disabled Elements

July 30, 2015 4
How To Test For Disabled Elements
Long back i saw some post from Dave Haeffner  and he is writer of Elemental Selenium -- a free, once weekly Selenium tip newsletter that's read by thousands of testing professionals, also the author of The Selenium Guidebook; a guide on how to use Selenium successfully.

I am receiving some weekly tips from Dave Haeffner's site and those are in Ruby language. i want to rewrite them in Java. Using Selenium webdriver + TestNg + Java

Problem:
On occasion you may have the need to check if an element on a page is disabled or enabled. Sounds simple enough, but how do you do it? 

Solution:
We have a available method called isEnabled(). which will help us in resolving the above problem.
boolean org.openqa.selenium.WebElement.isEnabled()


  • isEnabled

    boolean isEnabled()
    Is the element currently enabled or not? This will generally return true for everything but disabled input elements.
    Returns:
    True if the element is enabled, false otherwise.


package sample;

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Enable_test {
	public WebDriver driver;

	@Test
	public void testEnable_test() throws Exception {

		driver.get("http://the-internet.herokuapp.com");
		driver.findElement(By.linkText("Dropdown")).click();
		List<WebElement> dropdown=driver.findElements(By.xpath("//select[@id='dropdown']/option"));
		for (int i = 0; i < dropdown.size(); i++) {
			if(dropdown.get(i).getText()=="Please select an option")
			{
				//assert false will always expects false value. 
				//Here option is disabled so it will return false
				Assert.assertFalse(dropdown.get(i).isEnabled());
			}
		}
	}

	@BeforeClass
	public void beforeClass() {
		driver = new FirefoxDriver();
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		
	}

	@AfterClass
	public void afterClass() throws Exception {

		driver.quit();
	}

}

July 20, 2015

Simulate pressing of Multiple Keys (using chord)

July 20, 2015 10
One of the nice feature in selenium webdriver is it allows us to simulate pressing of multiple keys using a method called "chord"

Here is the explanation of chord method:

Simulate pressing many keys at once in a "chord". Takes a sequence of Keys.XXXX or strings; appends each of the values to a string, and adds the chord termination key (Keys.NULL) and returns the resultant string. 

Source:  http://seleniumhq.github.io/selenium/docs/api/java/index.html

In the below example i am going to show how to perform Copy and Paste using Selenium webdriver using Actions + Keys + chord.



Below is scenario:
1. Open https://accounts.google.com/signup
2. Type something in FirstName
3. Copy the content in FirstName field (CTRL+c)
4. Paste same thing in LastName field (CTRL+v


package sample;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Keys_Chord {
 
 public WebDriver driver;

 @Test
 public void testKeys_Chord() throws Exception {
  driver.get("https://accounts.google.com/signup");
  //Element definitions for FirstName and LastName
  WebElement txtFName=driver.findElement(By.name("FirstName"));
  WebElement txtLName=driver.findElement(By.name("LastName"));
  //Type "webdriver" in First Name
  txtFName.sendKeys("webdriver");
  //Create an object for Actions Class
  Actions a = new Actions(driver);
  //select the value which is typed in FirstName field
  a.sendKeys(txtFName, Keys.chord(Keys.CONTROL,"a")).perform();
  //Performing copy action using CTRl+C
  a.sendKeys(Keys.chord(Keys.CONTROL,"c")).perform();
  //Performing paste action using CTRL+V in LastName field
  a.sendKeys(txtLName, Keys.chord(Keys.CONTROL,"v")).perform();
  Thread.sleep(2000);
 }

 @BeforeClass
 public void beforeClass() 
 {
  driver = new FirefoxDriver();
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 }

 @AfterClass
 public void afterClass() throws Exception 
 {
  driver.quit();
 }
}

July 17, 2015

Keys Simulation using Selenium Webdriver

July 17, 2015 8
Keys Simulation using Selenium Webdriver
Here is the post how to simulate keys actions using selenium webdriver..Keys are used simulate user keyboard actions. For example if you want Press Enter, PageUp, Page Down, ALT or Tabs keys using selenium. It can be achieved by using Keys class..

For example after entering some text in search box you need not to click submit/search button. you can simulate ENTER key actions by using Keys class.

To achieve this we have to use Advanced User Interaction API.


More details about Advanced User Interactions can be found here --  Actions

In order to use AUI we need to create an object for Actions class.

In below scenario i will show how to Use Actions class and simulate Enter Key, Page Up and Page Down keys.


package sample;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Keys_Test {
 
 public WebDriver driver;

 @Test
 public void testKeys_Test() throws Exception {
  driver.get("http://www.amazon.in/");
  WebElement txtSearch=driver.findElement(By.id("twotabsearchtextbox"));
  txtSearch.sendKeys("mobiles");
  //Create an object for Actions class
  Actions a = new Actions(driver);
  //Simulate Enter key
  a.sendKeys(Keys.ENTER).perform();
  //Simulate Page Down
  a.sendKeys(Keys.PAGE_DOWN).perform();
  //Simulate page Up
  a.sendKeys(Keys.PAGE_UP).perform();
  Thread.sleep(2000);
 }

 @BeforeClass
 public void beforeClass() 
 {
  driver = new FirefoxDriver();
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 }

 @AfterClass
 public void afterClass() throws Exception 
 {
  driver.quit();
 }
}