Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in DevOps and Agile by (19.7k points)

I'm fairly new to Selenium WebDriver. I wrote code to read the login credentials and values from the excel sheet by using Data Provider. It runs through the first set up data(login functionality) perfectly giving me the green status bar.

In my application, after login, I want to select values by sending index and Selection(In Administration Method) from the same excel sheet but I failed to read values. For hard coded values its working fine.

Can anyone please give me the idea how to write it. Used Excel Sheet:

Below is my code:

import java.io.File;

import jxl.Sheet;

import jxl.Workbook;

import org.testng.annotations.BeforeSuite;

import org.testng.annotations.DataProvider;

import org.testng.annotations.Test;

import org.junit.AfterClass;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

//import org.testng.annotations.BeforeClass;

public class TestCase {

String[][] tabArray = null;

Workbook workbk;

Sheet sheet;

int rowCount, colCount;

String sheetPath = "test/Resources/Data/Auto_Increment.xls";

WebDriver login;

//int eRow, eCol, sRow = 0, sCol = 0;

@BeforeSuite

public void setUp(){

    login = new FirefoxDriver();

    login.get("http://etazo.tangosoftware.com");

    System.out.println("select the etazo web link..");

}

@DataProvider

public Object[][] getLoginData() throws Exception {

    Object[][] retObjArr = getExcelData(sheetPath, "Sheet1");

    System.out.println("getData function executed!!");

    return retObjArr;

}

//  Excel API to read test data from excel workbook

public String[][] getExcelData(String xlPath, String shtName)

        throws Exception {

    Workbook workbk = Workbook.getWorkbook(new File(xlPath));

    Sheet sht = workbk.getSheet(shtName);

    rowCount = sht.getRows();

    colCount = sht.getColumns();

    tabArray = new String[rowCount][colCount - 2];

    System.out.println("erow: " + rowCount);

    System.out.println("ecol: " + colCount);

    for (int i = 0; i < rowCount; i++) {

        for (int j = 0; j < 3; j++) {

            tabArray[i][j] = sht.getCell(j, i).getContents();

        }

    }

    return (tabArray);

}

@Test(dataProvider = "getLoginData")

public void LoginData(String distID, String asmtId, String studID)

        throws InterruptedException, BiffException, IOException {

    Administartion(distID, asmtId, studID);

}

public void Administartion(String distID, String asmtId, String studID)

        throws BiffException, IOException {

    Workbook workbk = Workbook.getWorkbook(new File(sheetPath));

    Sheet sht = workbk.getSheet("Sheet1");

    int currRow = sht.findCell(studID).getRow();

    //login.findElement(By.xpath("//*[@id='question-"+sIndex+"']/bubbles/circle["+sValue+"]")).click();     

    System.out.println(sht.getCell(3, currRow).getContents() + " Index ");

    System.out.println(sht.getCell(4, currRow).getContents() + " Answer selection");

}

}

1 Answer

0 votes
by (62.9k points)

Dependencies used:

 

<dependency>

    <groupId>org.apache.poi</groupId>

    <artifactId>poi</artifactId>

    <version>3.13</version>

</dependency>

 

<dependency>

    <groupId>org.apache.poi</groupId>

    <artifactId>poi-ooxml</artifactId>

    <version>3.13</version>

</dependency>

 

<dependency>

    <groupId>org.testng</groupId>

    <artifactId>testng</artifactId>

    <version>6.14.3</version>

    <scope>test</scope>

</dependency>

Code goes here to read xlsx file:

 

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

 

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import org.apache.poi.ss.usermodel.DataFormatter;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.testng.annotations.DataProvider;

import org.testng.annotations.Test;

 

public class TestDataProvider {

    static File resultFile = new File(“PATH OF THE EXCEL”);

    public static DataFormatter formatter = new DataFormatter();

 

    @Test(dataProvider = "readExcelFile")

    public static void test1(String slNum, String name, String Address, String email) throws  IOException {

        System.out.println(slNum+" "+ name+" "+Address + " "+email);

 

   // FURTHER CODE GOES HERE

 

 

    }

 

    @DataProvider

    public static Object[][] readExcelFile() throws InvalidFormatException, IOException {

        FileInputStream fis = new FileInputStream(resultFile);

        XSSFWorkbook wb = new XSSFWorkbook(fis);

        XSSFSheet sh = wb.getSheet(“SHEET NAME”);

 

        System.out.println(sh.getPhysicalNumberOfRows());

        System.out.println(sh.getRow(0).getPhysicalNumberOfCells());

        int RowNum = sh.getPhysicalNumberOfRows();

        int ColNum = sh.getRow(0).getPhysicalNumberOfCells();

 

        String[][] xlData = new String[RowNum-1][ColNum];

 

        for (int i = 0; i < RowNum - 1; i++) 

        {

            XSSFRow row = sh.getRow(i + 1);

            for (int j = 0; j < ColNum; j++) 

            {

                if (row == null)

                    xlData[i][j] = "";

                else {

                    XSSFCell cell = row.getCell(j);                 

                    if (cell == null)

                        xlData[i][j] = ""; 

                    else {

                        String value = formatter.formatCellValue(cell);

                        xlData[i][j] = value.trim();                        

                    }

                }

            }

        }       

        return xlData;

    }   

}

Browse Categories

...