I am new to Selenium and facing an issue while running my selenium Java file from command prompt (through framework).
I have two Java (Selenium) files: 1. ShoppingCart.java (which has all the functions and the main method), 2. ExcelWrite.java (which has Excel objects and deals with Excel sheets for updating results)
I am calling the static method of ExcelWrite.java into my main class ShoppingCart.java as:
<< ExcelWrite.method_name(argument_list) >>
Both files belong to the same package "shop".
When E try to compile the above two files separately by javac ExcelWrite.java
and javac ShoppingCart.java
, ExcelWrite.java compiles but ShoppingCart.java gives error:
symbol not found at << ExcelWrite.method_name(argument_list) >>
However when when I try this: javac *.java
(from the directory where the files are) both files compiles and .class files are created.
But when trying to run ShoppingCart.java
from Command Prompt, it's giving me error:
Could not find or load the main class.
Script works perfectly fine on Eclipse.
java version: 1.8.0_25
Path of my jdk in environment variables: C:\Program Files\Java\jdk1.8.0_25\bin;
path of my java files: C:\Users\pooja.a.tripathi\Desktop\Omni
Classpath in environment variables: C:\Program Files\Java\jdk1.8.0_25\bin;C:\Dependency\selenium-java-2.40.0.jar;C:\Dependency\selenium-server-standalone-2.40.0.jar;C:\Dependency\Eclipse_TestNG\guava-base-r03.jar;C:\Dependency\Eclipse_TestNG\guava-collections-r03.jar;C:\Dependency\Eclipse_TestNG\junit-4.8.2.jar;C:\Dependency\Eclipse_TestNG\testng.jar;C:\Dependency\Eclipse_TestNG\testng-sorces.jar;C:\Dependency\POI\commons-codec-1.5.jar;C:\Dependency\POI\commons-logging-1.1,jar;C:\Dependency\POI\dom4j-1.6.1.jar\C:\Dependency\POI\junit-4.11.jar;C:\Dependency\POI\log4j-1.2.13.jar;C:\Dependency\POI\poi-examples-3.10-FINAL-20140208;C:\Dependency\POI\poi-excelant-3.10-FINAL-20140208.jar;C:\Dependency\POI\poi-ooxml-3.10-FINAL-20140208.jar;C:\Dependency\POI\poi-ooxml-schemas-3.10-FINAL-20140208.jar;C:\Dependency\POI\poi-scratchpad-3.10-FINAL-20140208;C:\Dependency\POI\stax-api-1.0.1.jar;C:\Dependency\POI\xmlbeans-2.3.0;C:\Dependency\POI\poi-3.10-FINAL-20140208.jar
I also tried setting classpath and using: java -cp shop.ShoppingCart
java -cp .ShoppingCart
but nothing seems working. I tried everything available on the various threads but to no avail. I read that the issue mainly comes due to classpath.
Can anyone let me know why my both Java files are not getting compiled separately and how to run it?
Below is the code of both the files:
ShoppingCart.java
package shop;
// import jar files
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class ShoppingCart {
// Variable declaration
private WebDriver driver = new FirefoxDriver();
String url = "http://omnichanneldemo.com/index.php?route=common/home";
String portalTitle = "Omnichannel Demo";
String actualTitle = "";
//Function to launch the site
private void LauchSite(String url) {
// Command To Open URL In Browser
System.out.println("Launching Site");
driver.manage().window().maximize();
driver.get(url);
//Verify the Page title
actualTitle = driver.getTitle();
try{
// compare the actual title of the page with the expected one and print the result as accordingly
if (actualTitle.contentEquals(portalTitle)){
WriteLog("//1. Website Launched <" + driver.getCurrentUrl() + ">");
}
}
catch(Exception e)
{
e.printStackTrace();
e.getCause();
WriteLog("//1. error in launching website");
}
}
//Function to select the category and the product
private void CategorySelection()
{
// Select category - "Gaming"
try{
WebElement category= driver.findElement(By.linkText("Gaming"));
WriteLog("//2. Category exist >"+category);
if (category!=null){
category.click();
}
}catch(NoSuchElementException e){
e.printStackTrace();
e.getCause();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Gaming")));
if(element!=null)
element.click();
else
WriteLog("//2. Category not clickable or does not exist >"+element);
}
// Select product - "Microsoft Wired Controller For Windows"
try{
WebElement game = driver.findElement(By.linkText("Microsoft Wired Controller For Windows"));
WriteLog("//3. Game exist >"+game);
if(game!=null)
game.click();
}catch(NoSuchElementException e){
e.printStackTrace();
e.getCause();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Gaming")));
if(element!=null)
element.click();
else
WriteLog("//3. Category not clickable or does not exist >"+element);
}
}
//Function to add category to shopping cart
private void AddCategoryToCart()
{
//Select button " Add to Cart"
try{
WebElement addbtn = driver.findElement(By.xpath("//button[@id='button-cart']"));
//System.out.println(addbtn);
WriteLog("//4. Add to Cart button exist >"+addbtn);
if (addbtn!=null)
addbtn.click();
}catch(Exception e)
{
e.printStackTrace();
e.getMessage();
WriteLog("//4. Unable to proceed as either the Add to Cart button is not visible or not selectable >");
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id='button-cart']")));
if(element!=null)
element.click();
else
WriteLog("//4. Category not clickable or does not exist >"+element); }
try{
//WebElement item = driver.findElement(By.xpath("(//button[@type='button'])[5]"));
WebDriverWait wait1 = new WebDriverWait(driver, 60);
WebElement item = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[3]/div/button")));
//System.out.println(item);
if (item!=null){
item.click();
WriteLog("//5. Item updated in cart. Proceeding with checkout.");
/*WebElement details = driver.findElement(By.xpath("//div[@id='cart']/ul/li[2]/div/p/a[2]/strong"));
System.out.println(details);*/
/*if (details!=null)
{
WriteLog("//5. Item updated in cart. Proceeding with checkout."); */
}
else
System.out.println("Cannot click on item button");
}
catch(Exception e)
{
e.printStackTrace();
e.getMessage();
WriteLog("//5. Unable to proceed as either the Add to Cart button is not visible or not selectable. Re-trying >");
WebDriverWait wait1 = new WebDriverWait(driver, 60);
WebElement item = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[3]/div/button")));
System.out.println(item);
if (item!=null)
item.click();
WebElement details = driver.findElement(By.xpath("//div[@id='cart']/ul/li[2]/div/p/a[2]/strong"));
if (details!=null)
{
WriteLog("//5. Item updated in cart. Proceeding with checkout.");
}
else
WriteLog("//5.Unable to proceed");
}
}
//Function to checkout from shopping cart
private void CartCheckout(){
// Select checkout option
try{
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement checkout = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='cart']/ul/li[2]/div/p/a[2]/strong")));
//System.out.println(checkout);
if (checkout!=null){
checkout.click();
//WebElement info = driver.findElement(By.xpath("(//input[@name='account'])[2]"));
//System.out.println(info);
//if(info!=null){
//WriteLog("//5. Order checked out");
//}
}
}catch(Exception e)
{
e.printStackTrace();
e.getMessage();
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='cart']/ul/li[2]/div/p/a[2]/strong")));
if(element!=null){
element.click();
WebElement info = driver.findElement(By.xpath("(//input[@name='account'])[2]"));
if(info!=null){
WriteLog("//5. Order checked out"); }
else
WriteLog("//5. Cannot proceed");
}
}
}
//Function to fill guest customer details
private void CustomerDetails(){
//Select "Guest Account" option and continue
try{
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement guestrdbtn = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("(//input[@name='account'])[2]")));
//WebElement guestrdbtn2 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='collapse-checkout-option']/div/div/div/div[2]/label")));
//System.out.println(guestrdbtn);
WriteLog("//6. Proceeding with Guest Account");
if(guestrdbtn!=null){
guestrdbtn.click();
driver.findElement(By.id("button-account")).click();
}
}catch(NoSuchElementException e)
{
e.getMessage();
e.printStackTrace();
}
//driver.findElement(By.xpath("//div[@id='collapse-checkout-option']/div/div/div/div[2]/label")).click();
//driver.findElement(By.id("button-account")).click();
//Fill customer details
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement item = wait.until(ExpectedConditions.elementToBeClickable(By.id("input-payment-firstname")));
//System.out.println(item);
if (item!=null){
driver.findElement(By.id("input-payment-firstname")).clear();
driver.findElement(By.id("input-payment-firstname")).sendKeys("guest");
driver.findElement(By.id("input-payment-lastname")).clear();
driver.findElement(By.id("input-payment-lastname")).sendKeys("user");
driver.findElement(By.id("input-payment-email")).clear();
driver.findElement(By.id("input-payment-email")).sendKeys("guest@abc.com");
driver.findElement(By.id("input-payment-telephone")).clear();
driver.findElement(By.id("input-payment-telephone")).sendKeys("22334455");
driver.findElement(By.id("input-payment-address-1")).clear();
driver.findElement(By.id("input-payment-address-1")).sendKeys("address1");
driver.findElement(By.id("input-payment-city")).clear();
driver.findElement(By.id("input-payment-city")).sendKeys("london");
driver.findElement(By.id("input-payment-postcode")).clear();
driver.findElement(By.id("input-payment-postcode")).sendKeys("54631");
WriteLog("//7. Details entered");
}
else{
System.out.println("error occurred");
}
try{
WebElement rselect = driver.findElement(By.id("input-payment-zone"));
List<WebElement> roptions = rselect.findElements(By.tagName("option"));
for (WebElement option : roptions) {
if("Assam".equals(option.getText()))option.click();
}
}
catch(NoSuchElementException e)
{
e.printStackTrace();
e.getCause();
WriteLog("//7. Unable to value from dropdown");
WebDriverWait wait1 = new WebDriverWait(driver, 60);
WebElement rselect= wait1.until(ExpectedConditions.elementToBeClickable(By.id("input-payment-zone")));
if (rselect!=null){
List<WebElement> roptions = rselect.findElements(By.tagName("option"));
for (WebElement option : roptions) {
if("Assam".equals(option.getText()))option.click();
}
}else
WriteLog("//6. cannot continue..");
}
//Select Continue option
driver.findElement(By.id("button-guest")).click();
WriteLog("//8. Proceeding to shipment details");
}
//Function to add additional details
private void AdditionalDetails()
{
// Add additional comments, agree to Terms and Conditions and proceed to Confirmation screen
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.name("comment")).clear();
driver.findElement(By.name("comment")).sendKeys("Home Delivery");
driver.findElement(By.id("button-shipping-method")).click();
driver.findElement(By.name("agree")).click();
driver.findElement(By.id("button-payment-method")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
//Function to confirm the order
private void ConfirmOrder() throws Exception
{
String status=null;
//Select button Confirm Order
driver.findElement(By.id("button-confirm")).click();
try{
// Verify Confirmation screen
String text = driver.findElement(By.xpath(".//*[@class='checkout-success']/div[2]/div/div/h1")).getText();
//System.out.println(text);
if (text.equalsIgnoreCase("Your order has been placed!"))
{
System.out.println("Order placed successfuly");
status = "Pass";
}
else{
System.out.println("Order confirmation failed.");
status = "Fail";
}
}
catch(Exception e)
{
e.printStackTrace();
e.getMessage();
}
//Calling function to update test result in excel
ExcelWrite.writereport(status, 1,0);
//Select "Continue" option to return to home screen
WebDriverWait wait1 = new WebDriverWait(driver, 60);
WebElement contbtn= wait1.until(ExpectedConditions.elementToBeClickable(By.linkText("Continue")));
if (contbtn!=null)
contbtn.click();
WriteLog("//8. Navigating back to home screen");
//Close the browser
driver.close();
}
//Function to write log messages
private void WriteLog(String message) {
System.out.println(message);
}
public static void main(String[] args) throws Exception {
try{
ShoppingCart obj= new ShoppingCart();
obj.LauchSite("http://omnichanneldemo.com/index.php?route=common/home");
obj.CategorySelection();
obj.AddCategoryToCart();
obj.CartCheckout();
obj.CustomerDetails();
obj.AdditionalDetails();
obj.ConfirmOrder();
}catch(Exception e){
e.printStackTrace();
e.getMessage();
}
}
}
ExcelWrite.java
package shop;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.*;
import org.apache.poi.ss.usermodel.*;
public class ExcelWrite {
public static void writereport(String status, int rownum, int colnum)
{
System.out.println(status);
try {
FileInputStream fis = new FileInputStream("C:\\E2EFramework\\Data\\Datasheet_1.xls");
Workbook wb=WorkbookFactory.create(fis);
Sheet S = wb.getSheet("Temp");
Row row = S.getRow(rownum);
//System.out.println(rownum);
Cell cell = row.getCell(colnum, row.RETURN_BLANK_AS_NULL);
//System.out.println(colnum);
if(cell==null)
{
cell = row.createCell(colnum);
cell.setCellValue(status);
}else {
cell.setCellValue(status);
}
FileOutputStream fos=new FileOutputStream("C:\\E2EFramework\\Data\\Datasheet_1.xls");
wb.write(fos);
fis.close();
fos.close();
}
catch(IOException | InvalidFormatException e)
{
e.printStackTrace();
}
}
}