Friday 28 June 2013

About XSLT

XSL stands for EXtensible Stylesheet Language, and is a style sheet language
 for XML documents.
XSLT stands for XSL Transformations. In this tutorial you will learn how to
use XSLT to transform XML documents into other formats, like XHTML.

Sunday 23 June 2013

Window Handling & Drop down Method in WebDriver



package window;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class WindowHandling {

    public static void main(String[] args) throws InterruptedException
    {
                    WebDriver driver=new FirefoxDriver();
                    driver.get("https://www.irctc.co.in/");
                    driver.findElement(By.linkText("Hotels")).click();
                    //==================window handling method======================
                    Set<String> winhandle=driver.getWindowHandles();
               
                    //====================Getting id from all window=============
                    Iterator<String> it=winhandle.iterator();
                    String Parentwin=it.next();
                    String ChildWin=it.next();
                    driver.switchTo().window(ChildWin);
                    driver.findElement(By.xpath("//img[@alt='Ginger Hotel']")).click();
                    Thread.sleep(3000);
                    Set<String> winhandle1=driver.getWindowHandles();
                    Iterator<String> it1=winhandle1.iterator();
                    Parentwin=it1.next();
                    ChildWin=it1.next();
                    String SubChildWin=it1.next();
                    driver.switchTo().window(SubChildWin);
                    driver.findElement(By.cssSelector("#air_fromrowed > a > img")).click();
                    driver.findElement(By.linkText("29")).click();
                    driver.findElement(By.cssSelector("#air_fromrowed1 > a > img")).click();
                    driver.findElement(By.linkText("6")).click();
                    driver.findElement(By.linkText("6")).click();
                    driver.findElement(By.cssSelector("input.grbtn")).click();
                    Thread.sleep(3000);
                  
                    driver.findElement(By.id("roomType0")).click();
                    Select sel=new Select(driver.findElement(By.id("noOfRooms0")));
                    List<WebElement> lst=sel.getOptions();
                    System.out.println(lst.size());
                    for(int i=0;i<lst.size();i++)
                    {
                                  String Roomno=lst.get(i).getText();
                                 if(Roomno.equals("1"))
                                 {
                                     sel.selectByIndex(i);
                                 }
                    }
                    }
}

Tuesday 18 June 2013

Code for XLS Reader

package sample;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFHyperlink;
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;

    import org.apache.poi.ss.usermodel.IndexedColors;
    import org.apache.poi.xssf.usermodel.*;


    import java.io.*;
    import java.util.Calendar;


    public class Xls_Reader {
        public static String filename = System.getProperty("user.dir")+"\\src\\config\\testcases\\TestData.xlsx";
        public  String path;
        public  FileInputStream fis = null;
        public  FileOutputStream fileOut =null;
        private XSSFWorkbook workbook = null;
        private XSSFSheet sheet = null;
        private XSSFRow row   =null;
        private XSSFCell cell = null;
       
        public Xls_Reader(String path) {
           
            this.path=path;
            try {
                fis = new FileInputStream(path);
                workbook = new XSSFWorkbook(fis);
                sheet = workbook.getSheetAt(0);
                fis.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
        }
        // returns the row count in a sheet
        public int getRowCount(String sheetName){
            int index = workbook.getSheetIndex(sheetName);
            if(index==-1)
                return 0;
            else{
            sheet = workbook.getSheetAt(index);
            int number=sheet.getLastRowNum()+1;
            return number;
            }
           
        }
       
        // returns the data from a cell
        public String getCellData(String sheetName,String colName,int rowNum){
            try{
                if(rowNum <=0)
                    return "";
           
            int index = workbook.getSheetIndex(sheetName);
            int col_Num=-1;
            if(index==-1)
                return "";
           
            sheet = workbook.getSheetAt(index);
            row=sheet.getRow(0);
            for(int i=0;i<row.getLastCellNum();i++){
                //System.out.println(row.getCell(i).getStringCellValue().trim());
                if(row.getCell(i).getStringCellValue().trim().equals(colName.trim()))
                    col_Num=i;
            }
            if(col_Num==-1)
                return "";
           
            sheet = workbook.getSheetAt(index);
            row = sheet.getRow(rowNum-1);
            if(row==null)
                return "";
            cell = row.getCell(col_Num);
           
            if(cell==null)
                return "";
            //System.out.println(cell.getCellType());
            if(cell.getCellType()==Cell.CELL_TYPE_STRING)
                  return cell.getStringCellValue();
            else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){
                 
                  String cellText  = String.valueOf(cell.getNumericCellValue());
                  if (HSSFDateUtil.isCellDateFormatted(cell)) {
                       // format in form of M/D/YY
                      double d = cell.getNumericCellValue();

                      Calendar cal =Calendar.getInstance();
                      cal.setTime(HSSFDateUtil.getJavaDate(d));
                        cellText =
                         (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
                       cellText = cal.get(Calendar.DAY_OF_MONTH) + "/" +
                                  cal.get(Calendar.MONTH)+1 + "/" +
                                  cellText;
                      
                       //System.out.println(cellText);

                     }

                 
                 
                  return cellText;
              }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK)
                  return "";
              else
                  return String.valueOf(cell.getBooleanCellValue());
           
            }
            catch(Exception e){
               
                e.printStackTrace();
                return "row "+rowNum+" or column "+colName +" does not exist in xls";
            }
        }
       
        // returns the data from a cell
        public String getCellData(String sheetName,int colNum,int rowNum){
            try{
                if(rowNum <=0)
                    return "";
           
            int index = workbook.getSheetIndex(sheetName);

            if(index==-1)
                return "";
           
       
            sheet = workbook.getSheetAt(index);
            row = sheet.getRow(rowNum-1);
            if(row==null)
                return "";
            cell = row.getCell(colNum);
            if(cell==null)
                return "";
           
          if(cell.getCellType()==Cell.CELL_TYPE_STRING)
              return cell.getStringCellValue();
          else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){
             
              String cellText  = String.valueOf(cell.getNumericCellValue());
              if (HSSFDateUtil.isCellDateFormatted(cell)) {
                   // format in form of M/D/YY
                  double d = cell.getNumericCellValue();

                  Calendar cal =Calendar.getInstance();
                  cal.setTime(HSSFDateUtil.getJavaDate(d));
                    cellText =
                     (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
                   cellText = cal.get(Calendar.MONTH)+1 + "/" +
                              cal.get(Calendar.DAY_OF_MONTH) + "/" +
                              cellText;
                  
                  // System.out.println(cellText);

                 }

             
             
              return cellText;
          }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK)
              return "";
          else
              return String.valueOf(cell.getBooleanCellValue());
            }
            catch(Exception e){
               
                e.printStackTrace();
                return "row "+rowNum+" or column "+colNum +" does not exist  in xls";
            }
        }
       
        // returns true if data is set successfully else false
        public boolean setCellData(String sheetName,String colName,int rowNum, String data){
            try{
            fis = new FileInputStream(path);
            workbook = new XSSFWorkbook(fis);

            if(rowNum<=0)
                return false;
           
            int index = workbook.getSheetIndex(sheetName);
            int colNum=-1;
            if(index==-1)
                return false;
           
           
            sheet = workbook.getSheetAt(index);
           

            row=sheet.getRow(0);
            for(int i=0;i<row.getLastCellNum();i++){
                //System.out.println(row.getCell(i).getStringCellValue().trim());
                if(row.getCell(i).getStringCellValue().trim().equals(colName))
                    colNum=i;
            }
            if(colNum==-1)
                return false;

            sheet.autoSizeColumn(colNum);
            row = sheet.getRow(rowNum-1);
            if (row == null)
                row = sheet.createRow(rowNum-1);
           
            cell = row.getCell(colNum);   
            if (cell == null)
                cell = row.createCell(colNum);

            // cell style
            //CellStyle cs = workbook.createCellStyle();
            //cs.setWrapText(true);
            //cell.setCellStyle(cs);
            cell.setCellValue(data);

            fileOut = new FileOutputStream(path);

            workbook.write(fileOut);

            fileOut.close();   

            }
            catch(Exception e){
                e.printStackTrace();
                return false;
            }
            return true;
        }
       
       
        // returns true if data is set successfully else false
        public boolean setCellData(String sheetName,String colName,int rowNum, String data,String url){
            //System.out.println("setCellData setCellData******************");
            try{
            fis = new FileInputStream(path);
            workbook = new XSSFWorkbook(fis);

            if(rowNum<=0)
                return false;
           
            int index = workbook.getSheetIndex(sheetName);
            int colNum=-1;
            if(index==-1)
                return false;
           
           
            sheet = workbook.getSheetAt(index);
            //System.out.println("A");
            row=sheet.getRow(0);
            for(int i=0;i<row.getLastCellNum();i++){
                //System.out.println(row.getCell(i).getStringCellValue().trim());
                if(row.getCell(i).getStringCellValue().trim().equalsIgnoreCase(colName))
                    colNum=i;
            }
           
            if(colNum==-1)
                return false;
            sheet.autoSizeColumn(colNum); //ashish
            row = sheet.getRow(rowNum-1);
            if (row == null)
                row = sheet.createRow(rowNum-1);
           
            cell = row.getCell(colNum);   
            if (cell == null)
                cell = row.createCell(colNum);
               
            cell.setCellValue(data);
            XSSFCreationHelper createHelper = workbook.getCreationHelper();

            //cell style for hyperlinks
            //by default hypelrinks are blue and underlined
            CellStyle hlink_style = workbook.createCellStyle();
            XSSFFont hlink_font = workbook.createFont();
            hlink_font.setUnderline(XSSFFont.U_SINGLE);
            hlink_font.setColor(IndexedColors.BLUE.getIndex());
            hlink_style.setFont(hlink_font);
            //hlink_style.setWrapText(true);

            XSSFHyperlink link = createHelper.createHyperlink(XSSFHyperlink.LINK_FILE);
            link.setAddress(url);
            cell.setHyperlink(link);
            cell.setCellStyle(hlink_style);
             
            fileOut = new FileOutputStream(path);
            workbook.write(fileOut);

            fileOut.close();   

            }
            catch(Exception e){
                e.printStackTrace();
                return false;
            }
            return true;
        }
       
       
       
        // returns true if sheet is created successfully else false
        public boolean addSheet(String  sheetname){       
           
            FileOutputStream fileOut;
            try {
                 workbook.createSheet(sheetname);   
                 fileOut = new FileOutputStream(path);
                 workbook.write(fileOut);
                 fileOut.close();           
            } catch (Exception e) {           
                e.printStackTrace();
                return false;
            }
            return true;
        }
       
        // returns true if sheet is removed successfully else false if sheet does not exist
        public boolean removeSheet(String sheetName){       
            int index = workbook.getSheetIndex(sheetName);
            if(index==-1)
                return false;
           
            FileOutputStream fileOut;
            try {
                workbook.removeSheetAt(index);
                fileOut = new FileOutputStream(path);
                workbook.write(fileOut);
                fileOut.close();           
            } catch (Exception e) {           
                e.printStackTrace();
                return false;
            }
            return true;
        }
        // returns true if column is created successfully
        public boolean addColumn(String sheetName,String colName){
            //System.out.println("**************addColumn*********************");
           
            try{               
                fis = new FileInputStream(path);
                workbook = new XSSFWorkbook(fis);
                int index = workbook.getSheetIndex(sheetName);
                if(index==-1)
                    return false;
               
            XSSFCellStyle style = workbook.createCellStyle();
            style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
           
            sheet=workbook.getSheetAt(index);
           
            row = sheet.getRow(0);
            if (row == null)
                row = sheet.createRow(0);
           
            //cell = row.getCell();   
            //if (cell == null)
            //System.out.println(row.getLastCellNum());
            if(row.getLastCellNum() == -1)
                cell = row.createCell(0);
            else
                cell = row.createCell(row.getLastCellNum());
               
                cell.setCellValue(colName);
                cell.setCellStyle(style);
               
                fileOut = new FileOutputStream(path);
                workbook.write(fileOut);
                fileOut.close();           

            }catch(Exception e){
                e.printStackTrace();
                return false;
            }
           
            return true;
           
           
        }
        // removes a column and all the contents
        public boolean removeColumn(String sheetName, int colNum) {
            try{
            if(!isSheetExist(sheetName))
                return false;
            fis = new FileInputStream(path);
            workbook = new XSSFWorkbook(fis);
            sheet=workbook.getSheet(sheetName);
            XSSFCellStyle style = workbook.createCellStyle();
            style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
            XSSFCreationHelper createHelper = workbook.getCreationHelper();
            style.setFillPattern(HSSFCellStyle.NO_FILL);
           
           
       
            for(int i =0;i<getRowCount(sheetName);i++){
                row=sheet.getRow(i);   
                if(row!=null){
                    cell=row.getCell(colNum);
                    if(cell!=null){
                        cell.setCellStyle(style);
                        row.removeCell(cell);
                    }
                }
            }
            fileOut = new FileOutputStream(path);
            workbook.write(fileOut);
            fileOut.close();
            }
            catch(Exception e){
                e.printStackTrace();
                return false;
            }
            return true;
           
        }
      // find whether sheets exists   
        public boolean isSheetExist(String sheetName){
            int index = workbook.getSheetIndex(sheetName);
            if(index==-1){
                index=workbook.getSheetIndex(sheetName.toUpperCase());
                    if(index==-1)
                        return false;
                    else
                        return true;
            }
            else
                return true;
        }
       
        // returns number of columns in a sheet   
        public int getColumnCount(String sheetName){
            // check if sheet exists
            if(!isSheetExist(sheetName))
             return -1;
           
            sheet = workbook.getSheet(sheetName);
            row = sheet.getRow(0);
           
            if(row==null)
                return -1;
           
            return row.getLastCellNum();
           
           
           
        }
        //String sheetName, String testCaseName,String keyword ,String URL,String message
        public boolean addHyperLink(String sheetName,String screenShotColName,String testCaseName,int index,String url,String message){
            //System.out.println("ADDING addHyperLink******************");
           
            url=url.replace('\\', '/');
            if(!isSheetExist(sheetName))
                 return false;
           
            sheet = workbook.getSheet(sheetName);
           
            for(int i=2;i<=getRowCount(sheetName);i++){
                if(getCellData(sheetName, 0, i).equalsIgnoreCase(testCaseName)){
                    //System.out.println("**caught "+(i+index));
                    setCellData(sheetName, screenShotColName, i+index, message,url);
                    break;
                }
            }


            return true;
        }
        public int getCellRowNum(String sheetName,String colName,String cellValue){
           
            for(int i=2;i<=getRowCount(sheetName);i++){
                if(getCellData(sheetName,colName , i).equalsIgnoreCase(cellValue)){
                    return i;
                }
            }
            return -1;
           
        }
           
        // to run this on stand alone
        public static void main(String arg[]) throws IOException{
           
            //System.out.println(filename);
            Xls_Reader datatable = null;
           

                 datatable = new Xls_Reader("H:\\Student_Selenium_Workspaces\\Framework_Weekend\\src\\Framework_XL_Files\\Controller.xlsx");
                    for(int col=0 ;col< datatable.getColumnCount("TC5"); col++){
                        System.out.println(datatable.getCellData("TC5", col, 1));
                    }
        }
       
       
    }



Thursday 13 June 2013

Selecting a date from Datepicker using Selenium WebDriver

Calendars look pretty and of course they are fancy too.So now a days most of the websites are using advanced j Query Date pickers instead of displaying individual dropdowns for month,day,year.

 Datepicker




If we look at the Datepicker, it is just a like a table with set of rows and columns.To select a date ,we just have to navigate to the cell where our desired date is present.

Here is a sample code on how to pick a 13th date from the next month.


  1. import java.util.List;  
  2. import java.util.List;  
  3. import java.util.concurrent.TimeUnit;  
  4. import org.openqa.selenium.By;  
  5. import org.openqa.selenium.WebDriver;  
  6. import org.openqa.selenium.WebElement;  
  7. import org.openqa.selenium.firefox.FirefoxDriver;  
  8. import org.testng.annotations.BeforeTest;  
  9. import org.testng.annotations.Test;;  
  10.   
  11. public class DatePicker {  
  12.   
  13.  WebDriver driver;  
  14.    
  15.  @BeforeTest  
  16.  public void start(){  
  17.  System.setProperty("webdriver.firefox.bin""C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");    
  18.  driver = new FirefoxDriver();  
  19.  }  
  20.    
  21.  @Test  
  22.  public void Test(){  
  23.    
  24.   driver.get("http://jqueryui.com/datepicker/");  
  25.   driver.switchTo().frame(0);  
  26.   driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);  
  27.   //Click on textbox so that datepicker will come  
  28.   driver.findElement(By.id("datepicker")).click();  
  29.   driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);  
  30.   //Click on next so that we will be in next month  
  31.   driver.findElement(By.xpath(".//*[@id='ui-datepicker-div']/div/a[2]/span")).click();  
  32.     
  33.   /*DatePicker is a table.So navigate to each cell   
  34.    * If a particular cell matches value 13 then select it  
  35.    */  
  36.   WebElement dateWidget = driver.findElement(By.id("ui-datepicker-div"));  
  37.   List<webelement> rows=dateWidget.findElements(By.tagName("tr"));  
  38.   List<webelement> columns=dateWidget.findElements(By.tagName("td"));  
  39.     
  40.   for (WebElement cell: columns){  
  41.    //Select 13th Date   
  42.    if (cell.getText().equals("13")){  
  43.    cell.findElement(By.linkText("13")).click();  
  44.    break;  
  45.    }  
  46.   }   
  47.  }  
  48. }</webelement></webelement> 

 Source - mythoughts

Selenium WebDriver : findElement() Vs findElements() functions



It is very important to know the difference between findElement() and findElements() functions and here you go for it :

findElement() :

  1. Find the first element within the current page using the given "locating mechanism".
  2. Returns a single WebElement.
  3. Syntax: WebElement findElement(By by)

Ex:
  1. driver.get("https://signup.live.com");  
  2. WebElement firstName=driver.findElement(By.id("iFirstName"));  
  3. firstName.sendKeys("Automated First Name");  


findElements() :

  1. Find all elements within the current page using the given "locating mechanism".
  2. Returns List of WebElements.
  3. Syntax:  java.util.List<WebElement> findElements(By by)

Ex:
  1. driver.get("https://signup.live.com");  
  2. List <webelement> textboxes1=driver.findElements(By.xpath("//input[@type='text']"));  
  3. System.out.println("total textboxes "+textboxes1.size());  
  4.   
  5. </webelement>