Mod-17 :solution for calculator excercise | Selenium Forum
M
Posted on 21/01/2016
Following is my code :
Please suggest for improvements:
------------------------------------------
package p1;

import org.testng.annotations.Test;
import org.testng.annotations.AfterTest;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.testng.annotations.DataProvider;

public class Calculator_dp {
Xls_Reader xls = new Xls_Reader("C:\\Users\\chaitra\\Pictures\\Calculator1.xlsx");
static int rNum_increment=1;
static int rNum;
static ProfilesIni prof = new ProfilesIni();
static FirefoxProfile p = prof.getProfile("Chaitra");
static String minus="-";
static String by="/";
static String into="*";

static String minus_AtC="?";
static String by_AtC="÷";
static String into_AtC="×";

static WebDriver w=new FirefoxDriver(p);
@Test(dataProvider = "dp")
public void f(String num1,String num2, String operation,String ER,String ActualResultc,String status) {

System.out.println("num1:"+num1+"num2:"+num2+"operation:"+operation+"ER:"+ER+"ActualResultc:"+ActualResultc+"status:"+status);
/* a) Go to www.google.com and search for 'calculator'. In the results you will see a calculator coming in the browser itself.
b) Download this xls from here
c) Read the Num1, Num2, Operation and ExpectedResult columns using java code
d) Perform the operation on the calculator as described in xls file
e) Write the value in ExpectedResult column as result of actual operation on the application
f) Write the value in Result coulmn as Pass/Fail depending on output*/

w.get("https://www.google.com");
w.findElement(By.name("q")).sendKeys("calculator");
w.findElement(By.xpath("//*[@id='sblsbb']/button")).click();
w.manage().timeouts().pageLoadTimeout(50,TimeUnit.SECONDS);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
WebElement box=w.findElement(By.xpath("html/body/div[1]/div[5]/div[4]/div[7]/div[1]/div[3]/div/div[2]/div[2]/div/div/ol/div[1]/div[1]"));
// WebElement box=w.findElement(By.xpath("//*[@class='vk_c card-section']"));
//WebElement box=w.findElement(By.xpath("//*[@id='ires']/ol/div/div[1]"));


//System.out.println(box.findElement(By.xpath("//*[@id='cwbt00']/span")).getText());
List <WebElement> L1=new ArrayList<WebElement>();
L1=box.findElements(By.xpath("//*[@class='cwbts']"));
//for(int k=0;k<L1.size();k++)
//System.out.println(L1.get(k).getText());
//System.out.println(L1.size());
//95 5 ÷ 19

//------------------------------------------to enter num1 into calc--------------------------
for(int index=0;index<L1.size();index++)
{
if(L1.get(index).getText().equals(num1))
L1.get(index).click();
else
if(num1.length()>1)
{
//System.out.println("size"+num1.length());
for(int indexc=0;indexc<num1.length();indexc++)
{
String s1=num1.substring(indexc,indexc+1);
//System.out.println("s1"+s1);

if(L1.get(index).getText().equals(s1))
L1.get(index).click();


}

}
}

//------------------------------------------to enter operator into calc--------------------------
for(int index1=0;index1<L1.size();index1++)
{
// System.out.println("size"+L1.size());
//System.out.println(L1.get(index1).getText()+"----------");
//System.out.println(operation);

if(L1.get(index1).getText().equals(operation.trim()))
{
L1.get(index1).click();
// System.out.println("A match for operation");

}else
if(operation.equals(minus.trim()))
{
if(L1.get(index1).getText().equals(minus_AtC.trim()))
L1.get(index1).click();

}
else
if(operation.equals(by.trim()))
{
if(L1.get(index1).getText().equals(by_AtC.trim()))
L1.get(index1).click();

}
else
if(operation.equals(into.trim()))
{
if(L1.get(index1).getText().equals(into_AtC.trim()))
L1.get(index1).click();

}
//System.out.println("did not match");
}
//------------------------------------------to enter num2 into calc--------------------------
for(int index2=0;index2<L1.size();index2++)
{
if(L1.get(index2).getText().equals(num2))
L1.get(index2).click();
else
if(num2.length()>1)
{
//System.out.println("size"+num2.length());
for(int indexc=0;indexc<num2.length();indexc++)
{
String s1=num2.substring(indexc,indexc+1);
//System.out.println("s1"+s1);

if(L1.get(index2).getText().equals(s1))
L1.get(index2).click();


}

}
}

box.findElement(By.xpath("//*[@id='cwbt45']/div/span")).click();

String ActualResult=box.findElement(By.xpath("//*[@id='cwtltblr']/div[2]")).getText();
System.out.println("Result is"+ActualResult);
rNum_increment++;
System.out.println("rNum_increment"+rNum_increment);
//------------write contents into xls---------------------------------------------
xls.setCellData("Addition","ActualResult",rNum_increment, ActualResult);
if(ER.equals(ActualResult))
xls.setCellData("Addition","Status",rNum_increment, "PASS");
else
xls.setCellData("Addition","Status",rNum_increment, "FAIL");
}

@DataProvider
public Object[][] dp() {

int rows = xls.getRowCount("Addition");
int cols = xls.getColumnCount("Addition");

Object data[][] = new Object[rows-1][cols];

for(rNum=2;rNum<=rows;rNum++){
for(int cNum=0;cNum<cols;cNum++){
//System.out.println(xls.getCellData("Addition", cNum, rNum));
data[rNum-2][cNum] = xls.getCellData("Addition", cNum, rNum);

// 2 0 [0][0]
// 2 1 [0][1]
// 3 0 [1][0]
// 3 1 [1][1]
}
};

return data;
}

@AfterTest
public void afterTest() {
w.close();
}}

M
Replied on 22/01/2016

is program working as expected?


M
Replied on 22/01/2016

ya sir .Am getting data written in xlsx as per snapshot.

Please refer snapshot

Responsive image