July 20, 2015

Simulate pressing of Multiple Keys (using chord)

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();
 }
}

8 comments: