0% found this document useful (0 votes)
198 views

Selenium Framework Creation and Accessing Test Data From Excel

nnn

Uploaded by

Kavitha
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
198 views

Selenium Framework Creation and Accessing Test Data From Excel

nnn

Uploaded by

Kavitha
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Selenium Framework Creation And Accessing Test Data


From Excel – Selenium Tutorial #21
Last Updated:April 16, 2020
In the last tutorial, we familiarized you with the basics of test automation Frameworks, its
components and types. The frameworks illustrated in the previous tutorial were a few
amongst the most popular frameworks used by the testing fraternity.
We briefly discussed Module based Frameworks, Library Architecture based framework,
Keyword driven framework, Data driven Framework and Hybrid Framework. There are
various other frameworks also in the place.

Please take a note that we would be adopting Data Driven Test Automation Framework
for the rest of our tutorials.

In the current tutorial in this series, we would make you acquainted with a sample
framework, the Excels which would store the test data and their Excel manipulations.
On the same lines, we would move forward and introduce new strategies and resources to
mature our framework.
So let’s learn:
 Framework creation strategy using a sample project
 Access the test data stored in the external data source
Moving ahead, we would start with the description of the project hierarchy that we would be
creating in order to segregate the various project components.

Refer the below image for the project hierarchy created for the sample project. The below
java project can be easily created within the eclipse the way we have created the projects in
the earlier tutorials.
What You Will Learn: [show]

Selenium Project Folder Structure – Walkthrough


#1) src – The folder contains all the test scripts, generics, readers and utilities. All these
resources are nothing but the simple java classes. Under the source (src) folder, we have
created a hierarchy of folders.
a) test – The “test” folder is constituted of majorly two ingredients – test suite and the
folders representing the various modules of the application under test. Thus, each of these
folders contains the test scripts specific to the module to which it is associated. Testsuite is
a logical combination of more than one test scripts. Thus, the user can mark an entry of any
of the test scripts within the test suite that he/she desires to execute in the subsequent runs.
b) utilities – The “utilities” folder is constituted of various generics, constants, Readers and
classes for implementing user-defined exceptions. Each of the folders under utilities has got
its own significance.
 Excel Reader – A generic and common class has been created to read the test data
(input parameters and expected results) from the Excel sheets
 EnvironmentConstants – The folder is integration of the java classes that store the
static variables referencing to the paths and other environmental details. These
details can be Application URL, URL to the Databases, Credentials for Databases,
and URL to any third party tool being used. The disparate application URLs can be
set for different environments (dev, prod, test, master, slave etc).
 DataSetters – The folder incorporates the classes that implement the getters and
setters of the test data fetched from the Excels. To load multiple sets of Test data,
we create ArrayLists.
 UserRoles – The folder accommodates the classes that take care of the Role-based
access criteria if any for instinct users.
 FunctionLibrary – The folder is constituted of the classes which contain functions
and methods that can be shared and used amongst the multiple classes. Very often,
we are supposed to perform certain procedures prior and aftermath to the actual test
execution like login to the application, setting up environments, activities related to
rolls, data manipulations, writing results, methods those generate pre/post-conditions
to other methods. Since we tend to perform these activities for all or most of the test
script. Thus it is always recommended to create a separate class for such activities
instead of coding them repeatedly in each of the test scripts.
 PreConditionalMethods
 PostConditionalMethods
Very often, we are supposed to perform certain procedures prior and aftermath to the actual
test execution like login to the application, setting up environments, activities related to user
roles, data manipulations, writing results, methods those generate pre/post-conditions to
other methods. Since we tend to perform these activities for all or most of the test script,
thus it is always recommended to create a separate class for such activities instead of
coding them repeatedly in each of the test scripts.

CommonMethods
Like Pre and postconditions, there may be methods and functions those can be used by
more than one test script. Thus, these methods are grouped together in a class. The test
script can access these methods using the object of the common class.

#2) excel files – The excel files are considered to be the data source/data providers for test
script execution. These files store the test data into key-value pairs. Make a note that we
create a separate excel sheet for each of the test script i.e. each test script has its own test
data file. The name of the test script and the corresponding test data files/ excel sheet has
been kept same for the traceability perspective. Check out the sample test data format
below:
Test Data Format
Each of the columns represents a key and each of the rows represents a test data/value.
Specify the multiple rows in order to execute the same test script with multiple data sets.

Mark that the test data formats are solely user defined. Thus based on your requirements,
you can customize the test data files.

#3) library – The folder acts as a repository/artifactory for all the required jar files, libraries,
drivers etc to successfully build the test environment and to execute the test scripts. Refer
the following figure to check out the libraries we would be employed within our project.

#4) logs – The folder contains a .txt file that stores the logging information upon each
execution.
#5) test material – The folder contains the actual test data that needs to be uploaded if
any. This folder would come into picture when we come across test scenarios where the
user is required to upload files, documents, pictures, reports etc.
#6) build.xml – The xml file is used by the “Ant Server” to automate the entire build
process.
#7) log4j.xml – This xml file is used by a Java-based utility named as “Log4j” to generate
the execution logs.
Note: We would study more about the logs, user-defined exceptions and Ant in detail in the
upcoming tutorials. So don’t panic if you get confused between the notions.
Now, as we move forward let us understand the phenomenon where we access the
excel files and populate the test data into our test scripts.
In order to comprehend the process easier, we would break down the process into the
following steps.

Test Data Creation


Step 1: The first and the foremost step is to create the test data with which we would be
executing the test scripts. Considering the aforementioned test data format, let us create an
excel file named as “TestScript1”. Furnish the values in the elements.
Step 2: The next step is to download a standard java based API/Library named as “Java
excel Library” (jxl) to be able to access the already created generic methods for Excel
Manipulation.
Step 3: Create a generic excel reader class named as “ExcelReader.java”. Copy the below
code in the ExcelReader.java.
package Utilities;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
 
/**
 * This is a utility class created to read the excel test data file before performing the
 * This class loads the excel file and
 * reads its column entries.
 *
 */
 
public class ExcelReader {
                /**
                 * The worksheet to read in Excel file
                 */
 
                public static Sheet wrksheet;
                /**
                 * The Excel file to read
                 */
 
                public static Workbook wrkbook = null;
                /**
                 * Store the column data
                 */
 
                public static Hashtable<String, Integer> dict = new Hashtable<String, Intege
                /**
                 * Create a Constructor
                 *
                 * @param ExcelSheetPath
                 * @throws BiffException
                 * @throws WeblivException
                 */
 
                public ExcelReader(String ExcelSheetPath) throws IOException, BiffException
 
                            // Initialize
                                try {
                                               wrkbook = Workbook.getWorkbook(new File(Exce
                                               wrksheet = wrkbook.getSheet("Sheet1");
                                } catch (IOException e) {
                                                throw new IOException();
                                }
                }
                /**
                 * Returns the Number of Rows
                 *
                 * @return Rows
                 */
 
                public static int RowCount() {
                                return wrksheet.getRows();
                }
                /**
                 * Returns the Cell value by taking row and Column values as argument
                 *
                 * @param column
                 * @param row
                 * @return Cell contents
                 */
 
                public static String ReadCell(int column, int row) {
                                return wrksheet.getCell(column, row).getContents();
                }
                /**
                * Create Column Dictionary to hold all the Column Names
                 */
                public static void ColumnDictionary() {
                                // Iterate through all the columns in the Excel sheet and
                                // value in Hashtable
                                for (int col = 0; col < wrksheet.getColumns(); col++) {
                                                dict.put(ReadCell(col, 0), col);
                                }
                }
                /**
                 * Read Column Names
                 *
                 * @param colName
                 * @return value
                 */
 
                public static int GetCell(String colName) {
                                try {
                                                int value;
                                                value = ((Integer) dict.get(colName)).intV
                                                return value;
                                } catch (NullPointerException e) {
                                                return (0);
                                }
                }
}
Step 4: Create a generic class –“CommonMethods.java”. Create a common method within
the class that would read the cells from the excel sheet using the methods implemented in
ExcelReader.java.
/**
* Read the test data from excel file
*
* @param data The TestData data object
*/
 
public void readExcelData (TestData data) {
       ArrayList<String> browser = new ArrayList<String>();
       ArrayList<String> username = new ArrayList<String>();
       ArrayList<String> password = new ArrayList<String>();
       ArrayList<String> element1 = new ArrayList<String>();
       ArrayList<String> element2 = new ArrayList<String>();
       ArrayList<String> element3 = new ArrayList<String>();
 
       // Get the data from excel file
       for (int rowCnt = 1; rowCnt < ExcelReader.RowCount(); rowCnt++) {
       browser.add(ExcelReader.ReadCell(ExcelReader.GetCell("Browser"), rowCnt));
       username.add(ExcelReader.ReadCell(ExcelReader.GetCell("User ID"), rowCnt));
                     password.add(ExcelReader.ReadCell(ExcelReader.GetCell("Password"), ro
                     element1.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element1"), ro
                     element2.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element2"), ro
       element3.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element3"), rowCnt));
       }
       data.setBrowser(browser);
       data.setLoginUser(username);
       data.setPassword(password);
       data.setElement1(element1);
       data.setElement2(element2);
       data.setElement3(element3);
       }
Step 5: Create a new java class named as “TestData.java”. This class would act as a getter
and setter for excel data. Copy and paste the following code in the TestData.java class.
package Utilities.dataSetters;
import java.util.ArrayList;
public class TestData {
       private ArrayList<String> loginUser = null;
       private ArrayList<String> password = null;
       private ArrayList<String> browser = null;
       private ArrayList<String> element1 = null;
       private ArrayList<String> element2 = null;
       private ArrayList<String> element3 = null;
       /**
        * @return loginUser
        */
       public ArrayList<String> getLoginUser() {
              return loginUser;
       }
       /**
        * @param loginUser
        */
       public void setLoginUser(ArrayList<String> loginUser) {
              this.loginUser = loginUser;
       }
       /**
        * @return password
        */
       public ArrayList<String> getPassword() {
              return password;
       }
       /**
        * @param password
        */
       public void setPassword(ArrayList<String> password) {
              this.password = password;
       }
       /**
        * @return browser
        */
       public ArrayList<String> getBrowser() {
              return browser;
       }
       /**
        * @param browser
        */
       public void setBrowser(ArrayList<String> browser) {
              this.browser = browser;
       }
       /**
        * @return element1
        */
       public ArrayList<String> getElement1() {
              return element1;
       }
       /**
        * @param element1
       */
       public void setElement1(ArrayList<String> element1) {
              this.element1 = element1;
       }     
       /**
        * @return element2
        */
       public ArrayList<String> getElement2() {
              return element2;
       }
       /**
        * @param element2
        */
       public void setElement2(ArrayList<String> element2) {
              this.element2 = element2;
      }
       /**
        * @return element3
        */
       public ArrayList<String> getElement3() {
              return element3;
       }
       /**
        * @param element3
       */
       public void setElement3(ArrayList<String> element3) {
              this.element3 = element3;
       }     
}
Step 6: The next step is to create instances of “TestData.java” and “CommonMethods.java”
java classes within the test script in order to access and populate the test data. Refer the
below code snippet for object initialization, reading excel data and populating the values
wherever required.
// Create Objects
public ExcelReader excelReaderObj;
CommonMethods commonMethodobj = new CommonMethods();
TestData td = new TestData();
 
// Load the excel file for testing
excelReaderObj = new ExcelReader(Path of the excel);
 
// Load the Excel Sheet Col in to Dictionary for use in test cases
excelReaderObj.ColumnDictionary();
 
// Get the data from excel file
commonMethodobj.readExcelData (td);
 
// Populate the username
driver.findElement(By.id("idofElement")).sendKeys(data.getLoginUser().get(0));
Therefore using the instance of testData.java class in conjunction with getters, any
test data value can be populated within the script.
Conclusion:
The tutorial mainly revolved around the notions like Framework Creation and Accessing test
data from the excels. We made you acquainted with the Framework creation strategy using
a sample project. We briefly laid the light on the various components and aspects of our
framework.

In order to access the test data stored in the external data source, we used a java based
API – jxl. We also created the sample code for reading and populating the excel data into
the test scripts.
Next Tutorial #22: In the next tutorial, we would base our tutorial on the concepts of
generics and their accessibility mechanism. We would create a few sample generic
methods and then access them within the test scripts. We would also introduce you to the
concept of Testsuite and the sample code development.
Recommended Reading
 Introduction to JUnit Framework and Its Usage in Selenium Script – Selenium
Tutorial #11
 Data Driven Framework in Selenium WebDriver Using Apache POI
 Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
 Introduction to Selenium WebDriver – Selenium Tutorial #8
 In-Depth Eclipse Tutorials For Beginners
 How to Use TestNG Framework for Creating Selenium Scripts - TestNG Selenium
Tutorial #12
 Efficient Selenium Scripting and Troubleshoot Scenarios – Selenium Tutorial #27
 Debugging Selenium Scripts with Logs (Log4j Tutorial) – Selenium Tutorial #26
CategoriesSelenium TutorialsPost navigation
Most Popular Test Automation Frameworks with Pros and Cons of Each – Selenium
Tutorial #20
Creating Generics and Testsuites – Selenium Tutorial #22
63 thoughts on “Selenium Framework Creation and Accessing Test
Data from Excel – Selenium Tutorial #21”

Comment Navigation
← Older Comments
1. manjunath
hi,
i can’t able to inspect button in web application,
i have tried all the locators. can any one pls help me out

Reply
2. Kenjal Gundecha
superb explanation vignesh

Reply
3. Kenjal Gundecha
Could you please share me the code on [email protected]
Reply
4. Vadim
Hi,

Please share the code with me as well.

[email protected]
Thanks
Vadim

Reply
5. Pulkit Shah
HI, can you share the framework with me ?

Reply
6. Nagarjuna
can you please share me the code [email protected]
Reply
7. Adesh
I need the framework steps like folder structured framework, as where we will write all types
of actions, test cases description, keywords etc., in the excel sheet for ex : keyword driven
framework.
Reply
8. neha
Where should we add the code given in the last step 6

Reply
9. neha
Where should we add the code given in last step 6?

Reply
10. Anupam Dey
Can you provide details for the CRAFT framework with selenium

Reply
11. Sumit Shukla
Please share the code with me
My Mail ID- [email protected]
Reply
12. Priya
could you share the framework with selenium?

Reply
13. Priya Doolapeta
Please send me the code of the framework. Excellent website and explanation thankyou.

Reply

Comment Navigation
← Older Comments
Leave a Comment

Comment

Name Email
Post Comment

About SoftwareTestingHelp
Helping our community since 2006! Most popular portal for Software professionals
with 100 million+ visits! You will absolutely love our tutorials on Software Testing,
Development, Software Reviews and much more!
Join Over 200,000+ Testers
Get premium ebooks and testing tips.

SUBSCRIBE NOW!
Join Over 300,000+ Followers!







Top FREE Training Tutorials

 Load Testing Buyer’s Guide


 Free QA Training
 Selenium Tutorials
 QTP/UFT Tutorials
 Quality Center QC Tutorials
 LoadRunner Tutorials
 JMeter Tutorials
 JIRA Tutorials
 VBScript Tutorials
 Best Test Management Tools
 Unix Tutorials
 DevOps Tutorials
 JAVA Tutorials
 Python Tutorials
 Free C++ Tutorials
 101+ Interview Questions
Join Our Team!

ABOUT US | CONTACT US | ADVERTISE | TESTING SERVICES


ALL ARTICLES ARE COPYRIGHTED AND CAN NOT BE REPRODUCED WITHOUT
PERMISSION.
© COPYRIGHT SOFTWARETESTINGHELP 2020 — READ OUR COPYRIGHT
POLICY | PRIVACY POLICY | TERMS | COOKIE POLICY | AFFILIATE
DISCLAIMER | LINK TO US

You might also like