Saturday, March 3, 2018

Upload File using Robot Class



import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.lang.reflect.Field;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.Test;

public class UploadFileTest {

@Test
public void testFileUpload() {
System.setProperty("webdriver.chrome.driver", "e:\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://smallpdf.com/word-to-pdf");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement btnUpload = driver.findElement(By.className("omnibox-link"));
Actions a = new Actions(driver);
btnUpload.click(); // open file upload dialog
// E:\input.docx
try {
Thread.sleep(3000);
Robot robot = new Robot();
typeKeys( "e:\\input.docx",robot);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void typeKeys(String str, Robot r) {
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)==':'){
typeCharacter(r, "SEMICOLON",true);
}
else if(str.charAt(i)=='\\'){
typeCharacter(r, "BACK_SLASH",false);
//KeyEvent.VK_BACK_SLASH
}
else if(str.charAt(i)=='.'){
typeCharacter(r, "PERIOD",false);
//KeyEvent.VK_PERIOD
}
else{
char ch =  str.charAt(i);
if(Character.isUpperCase(ch)){
typeCharacter(r,""+ch,true );
}
else{
typeCharacter(r,""+ch,false );
}

}

}
r.keyPress(KeyEvent.VK_ENTER);
}

public static void typeCharacter(Robot robot, String letter, boolean needShift) {
try {


String variableName = "VK_" + letter.toUpperCase();
Class clazz = KeyEvent.class;
Field field = clazz.getField(variableName);
int keyCode = field.getInt(null);

robot.delay(1000);

if (needShift)
robot.keyPress(KeyEvent.VK_SHIFT);

robot.keyPress(keyCode);
robot.keyRelease(keyCode);

if ( needShift)
robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (Exception e) {
System.out.println(e);
}
}

}

No comments:

Post a Comment