Skip to content

Commit 074cc82

Browse files
committedMar 29, 2021
📦 NEW: Complete Data provider with excel
1 parent 5bd71ca commit 074cc82

File tree

8 files changed

+158
-47
lines changed

8 files changed

+158
-47
lines changed
 

‎README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,10 @@ While learning it is very common to have doubts, to enhnance your learning I am
222222

223223
[13. TestNG – Data Provider – Part 2 (Data provider class, indices)](https://youtu.be/DAqqpxBRIO4)
224224

225-
[14. TestNG – Data Provider – Part 3 (Parallel, is name mandatory, Parameter & DP)](https://youtu.be/DAqqpxBRIO4)
225+
[14. TestNG – Data Provider – Part 3 (Parallel, is name mandatory, Parameter & DP)](https://youtu.be/DAqqpxBRIO4)
226+
227+
[15. Read Data From Excel - Part 1 | Selenium தமிழ்](https://youtu.be/Rsvan2NEqlg)
228+
229+
[16. Read Data From Excel - Part 2 | Selenium தமிழ்](https://youtu.be/2VAFdGBpW88)
230+
231+
[16. Data Provider Integration With Excel | Selenium தமிழ்](https://youtu.be/RiYQrqwjoqo)

‎pom.xml

+37-21
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,38 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2-
<modelVersion>4.0.0</modelVersion>
3-
<groupId>letcode-selenium</groupId>
4-
<artifactId>LetCode</artifactId>
5-
<version>0.0.1-SNAPSHOT</version>
6-
7-
<dependencies>
8-
<dependency>
9-
<groupId>org.seleniumhq.selenium</groupId>
10-
<artifactId>selenium-java</artifactId>
11-
<version>3.141.59</version>
12-
</dependency>
13-
14-
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
15-
<dependency>
16-
<groupId>org.testng</groupId>
17-
<artifactId>testng</artifactId>
18-
<version>6.14.2</version>
19-
</dependency>
20-
21-
</dependencies>
1+
<project xmlns="http://maven.apache.org/POM/4.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<groupId>letcode-selenium</groupId>
6+
<artifactId>LetCode</artifactId>
7+
<version>0.0.1-SNAPSHOT</version>
8+
9+
<dependencies>
10+
<dependency>
11+
<groupId>org.seleniumhq.selenium</groupId>
12+
<artifactId>selenium-java</artifactId>
13+
<version>3.141.59</version>
14+
</dependency>
15+
16+
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
17+
<dependency>
18+
<groupId>org.testng</groupId>
19+
<artifactId>testng</artifactId>
20+
<version>6.14.2</version>
21+
</dependency>
22+
23+
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
24+
<dependency>
25+
<groupId>org.apache.poi</groupId>
26+
<artifactId>poi</artifactId>
27+
<version>5.0.0</version>
28+
</dependency>
29+
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
30+
<dependency>
31+
<groupId>org.apache.poi</groupId>
32+
<artifactId>poi-ooxml</artifactId>
33+
<version>5.0.0</version>
34+
</dependency>
35+
36+
37+
</dependencies>
2238
</project>

‎src/main/java/utils/ReadExcel.java

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package utils;
2+
3+
import java.io.IOException;
4+
5+
import org.apache.poi.ss.usermodel.DataFormatter;
6+
import org.apache.poi.xssf.usermodel.XSSFCell;
7+
import org.apache.poi.xssf.usermodel.XSSFRow;
8+
import org.apache.poi.xssf.usermodel.XSSFSheet;
9+
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
10+
11+
public class ReadExcel {
12+
13+
public static String[][] getExcelData() {
14+
15+
String fileLocation = "./test-data/Login-data.xlsx";
16+
XSSFWorkbook wbook = null;
17+
try {
18+
wbook = new XSSFWorkbook(fileLocation);
19+
} catch (IOException e) {
20+
// TODO Auto-generated catch block
21+
e.printStackTrace();
22+
}
23+
XSSFSheet sheet = wbook.getSheetAt(0);
24+
int lastRowNum = sheet.getLastRowNum();
25+
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
26+
System.out.println("Inclusive of header: "+physicalNumberOfRows);
27+
System.out.println("No.of Rows: "+ lastRowNum);
28+
short lastCellNum = sheet.getRow(0).getLastCellNum();
29+
System.out.println("No.of cells:"+lastCellNum);
30+
String[][] data = new String[lastRowNum][lastCellNum];
31+
for (int i = 1; i <=lastRowNum; i++) {
32+
XSSFRow row = sheet.getRow(i);
33+
for (int j = 0; j < lastCellNum; j++) {
34+
XSSFCell cell = row.getCell(j);
35+
DataFormatter dft = new DataFormatter();
36+
String value = dft.formatCellValue(cell);
37+
// String value = cell.getStringCellValue();
38+
// System.out.println(value);
39+
data[i-1][j] = value;
40+
}
41+
}
42+
try {
43+
wbook.close();
44+
} catch (IOException e) {
45+
// TODO Auto-generated catch block
46+
e.printStackTrace();
47+
}
48+
return data;
49+
50+
51+
52+
53+
54+
55+
56+
57+
58+
59+
60+
}
61+
62+
}

‎src/test/java/testNgBasic/LearnDataProvider.java

+16-13
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,27 @@
1010
import utils.DataUtils;
1111

1212
public class LearnDataProvider {
13-
14-
// @Parameters({"emailId"})
13+
14+
// @Parameters({"emailId"})
1515
@Test(dataProvider = "getData",
1616
dataProviderClass = DataUtils.class)
17-
public void login(String data[]) {
18-
// System.err.println("from parameters: "+id);
17+
public void login(String data[]) throws InterruptedException {
18+
// System.err.println("from parameters: "+id);
1919
System.err.println("Email: "+data[0]);
2020
System.err.println("Pass: "+data[1]);
21-
/*
21+
2222
ChromeDriver driver = new ChromeDriver();
23-
* driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
24-
* driver.get("https://letcode.in/");
25-
* driver.findElementByLinkText("Log in").click();
26-
* driver.findElementByName("email") .sendKeys(email);
27-
* driver.findElementByName("password").sendKeys(pass);
28-
* driver.findElementByXPath("//button[.='LOGIN']").click(); String title =
29-
* driver.getTitle(); System.out.println("Title is "+title); driver.quit();
30-
*/
23+
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
24+
driver.get("https://letcode.in/");
25+
driver.findElementByLinkText("Log in").click();
26+
driver.findElementByName("email") .sendKeys(data[0]);
27+
driver.findElementByName("password").sendKeys(data[1]);
28+
Thread.sleep(2000);
29+
driver.findElementByXPath("//button[.='LOGIN']").click();
30+
String title =
31+
driver.getTitle();
32+
System.out.println("Title is "+title); driver.quit();
33+
3134
}
3235

3336
}

‎src/test/java/utils/DataUtils.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,21 @@
44

55
public class DataUtils {
66

7-
@DataProvider(indices = {1, 2}, parallel = !true)
7+
@DataProvider(/* indices = {1, 2}, */ parallel = !true)
88
public String[][] getData() {
9-
String[][] data = new String[3][2];
10-
// row 1
11-
data[0][0] = "koushik350@gmail.com";
12-
data[0][1] = "Pass123$";
9+
String[][] excelData = ReadExcel.getExcelData();
10+
// String[][] data = new String[3][2];
11+
// // row 1
12+
// data[0][0] = "koushik350@gmail.com";
13+
// data[0][1] = "Pass123$";
14+
//
15+
// data[1][0] = "koushik1@letcode.in";
16+
// data[1][1] = "Pass123$";
17+
//
18+
// data[2][0] = "last data";
19+
// data[2][1] = "Pass123$";
1320

14-
data[1][0] = "koushik1@letcode.in";
15-
data[1][1] = "Pass123$";
16-
17-
data[2][0] = "last data";
18-
data[2][1] = "Pass123$";
19-
20-
return data;
21+
return excelData;
2122
}
2223

2324
}

‎test-data/Login-data.xlsx

8.1 KB
Binary file not shown.

‎testng.xml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Suite">
4+
<test thread-count="5" name="Test">
5+
<classes>
6+
<class name="testNgBasic.LearnDataProvider"/>
7+
</classes>
8+
</test> <!-- Test -->
9+
</suite> <!-- Suite -->

‎testngDependsOnGroup.xml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Suite">
4+
<groups>
5+
<run>
6+
<include name="smoke"></include>
7+
</run>
8+
</groups>
9+
<test thread-count="5" name="Test">
10+
<classes>
11+
<class name="testNgBasic.LogIntoApp" />
12+
</classes>
13+
</test> <!-- Test -->
14+
</suite> <!-- Suite -->

0 commit comments

Comments
 (0)
Please sign in to comment.