Monday, August 24, 2015

Selenium : Writing Test Results in Excel - Part 2

Writing Test Results in Excel - Part 2









Example

Test 1 (launchSiteAndLogin)
    1. Go to http://www.seleniummaster.com/seleniummastertestapp/index.php
    2. Enter "test" in the Username field
    3. Enter "XXXX" in the Password filed
    4. Click on the Login button
    5. Verify that the text "Selenium Test" is present.

Test 2 (ChangeUserSettings)
    1. Click on the radio button near friends need my authorization to add me
    2. Click on the save button
    3. Verify that the text "preference saved" displayed.

Test3 (Logout)
    1. Click on the Logout button
    2. Verify that Login button displayed.


Pre-req :

1. TestNg
2. ApachePOI libaray

   

Step 1: write the UserSettingTest.java code as follows

public class UserSettingTest
{
private WebDriver browser;
private String baseUrl;
HSSFWorkbook workbook;
HSSFSheet sheet;
Map<String, Object[]> testresultdata;//define a test result data object
@BeforeClass(alwaysRun = true)
public void setupBeforeSuite(ITestContext context) {
baseUrl = "http://www.seleniummaster.com";
workbook = new HSSFWorkbook();
sheet = workbook.createSheet("Test Result");
testresultdata = new LinkedHashMap<String, Object[]>();
testresultdata.put("1", new Object[] {"Test Step Id", "Action", "Expected Result","Actual Result"});
try {
browser=new FirefoxDriver();
browser.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (Exception e) {
throw new IllegalStateException("Can't start Web Driver", e);
}
}
@Test(description="Launches the Selenium Master Test Application and Login")
public void launchSiteAndLogin() throws InterruptedException{
browser.get(baseUrl+"/seleniummastertestapp/index.php");
browser.findElement(By.id("login_login_username")).sendKeys("test");
browser.findElement(By.id("login_login_password")).sendKeys("XXXXX"); //password is omitted
browser.findElement(By.id("login_submit")).click();
try{
assertEquals(browser.findElement(By.id("id1")).getText(),"Test Selenium");
//add pass entry to the excel sheet
testresultdata.put("2", new Object[] {1d, "navigate to site and login", "site opens and login success","Pass"});
}
catch(Exception e)
{
//add fail entry to the excel sheet
testresultdata.put("2", new Object[] {1d, "navigate to site and login", "site opens and login success","Fail"});
}
}
@Test(description="Change a User settings to add as a friends after authorization")
public void ChangeUserSettings() {
browser.findElement(By.xpath("//input[@value='auth']")).click();
browser.findElement(By.id("accountprefs_submit")).click();
try{
assertEquals(browser.findElement(By.cssSelector("div.ok")).getText(), "Preferences saved");
//add pass entry to the excel sheet
testresultdata.put("3", new Object[] {2d, "User can change settings", "Settings changed","Pass"});
}
catch(Exception e)
{
//add fail entry to the excel sheet
testresultdata.put("3", new Object[] {2d, "User can change settings", "Settings NOT changed","Fail"});
}
}
@Test(description="Log out the system")
public void Logout() throws InterruptedException {
browser.findElement(By.linkText("Logout")).click();
try{
assertTrue(isElementPresent(By.id("login_login_username")));
//add pass entry to the excel sheet
testresultdata.put("4", new Object[] {3d, "User can logout", "Logout successfull","Pass"});
}
catch(Exception e)
{
//add fail entry to the excel sheet
testresultdata.put("4", new Object[] {3d, "User can logout", "Logout successfull","Fail"});
}
}
@AfterClass
public void setupAfterSuite() {
//write excel file and file name is TestResult.xls
Set<String> keyset = testresultdata.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object [] objArr = testresultdata.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if(obj instanceof Date)
cell.setCellValue((Date)obj);
else if(obj instanceof Boolean)
cell.setCellValue((Boolean)obj);
else if(obj instanceof String)
cell.setCellValue((String)obj);
else if(obj instanceof Double)
cell.setCellValue((Double)obj);
}
}
try {
FileOutputStream out =new FileOutputStream(new File("TestResult.xls"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//close the browser
browser.close();
browser.quit();
}
private boolean isElementPresent(By by) {
try {
browser.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
}


Step 3: Create a testng.xml file to run the test suite as TestNG Suite.
Step 4: Right click on the testng.xml file and select run as TestNG Suite.
Step 5: Check the test result on the console or in the test-output folder. Generally, open the index.html under the test-output folder to view the result.

The result file indicated that all the tests passed. With this pattern, you can expand the test suite with many test modules.You can also see the TestResult.xls file to view the test result. When you open the excel file, you will see the test result as shown below.

TestStepId    Action                                   Expected Result                      Actual Result
1                   navigate to site and login     site opens and login success     Pass
2                   User can change settings     Settings changed                      Pass
3                   User can logout                    Logout successfull                   Pass



1 comment:

  1. can someone help how to get the second result in the excel?

    ReplyDelete