Here , I show you how can you verify your testing script with different browser with basic java oops concepts.
1) Create JAVA project with name ShoppingCart.
2) Add Selenium Library for your projects.
https://www.seleniumhq.org/download/ you can download your selenium library from mention link.
3) Add package in your src folder with name
shoppingcart.driver.factory
4) Add your first class in your
shoppingcart.driver.factory package with name
DriverManager.java
package shoppingcart.driver.factory;
import org.openqa.selenium.WebDriver;
public abstract class DriverManager {
protected WebDriver driver;
protected abstract void createWebDriver();
public void quiteWebDriver() {
if (null != driver) {
driver.quit();
driver = null;
}
}
public WebDriver getWebDriver() {
if (null == driver) {
createWebDriver();
}
return driver;
}
}
Here, you need to create abstract class so we can use createWebDriver(); method easily in different class.
5) Now we write code for how we can use that createWebDriver(); Method with different browser. Create package name with
shoppingcart.driver.factory.BrowserType under that package you need to create different classes for different browsers.
Add different Class for browser and Extends it with DriverManager Class which we created prior.
ChromeDriverManager.java
package shoppingcart.driver.factory.BrowserType;
import org.openqa.selenium.chrome.ChromeDriver;
import shoppingcart.driver.factory.DriverManager;
public class ChromeDriverManager extends DriverManager {
@Override
protected void createWebDriver() {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver","Your ChromeDriver Path");
this.driver = new ChromeDriver();
}
}
FireFoxDriverManager.java
package shoppingcart.driver.factory.BrowserType;
import org.openqa.selenium.firefox.FirefoxDriver;
import shoppingcart.driver.factory.DriverManager;
public class FireFoxDriverManager extends DriverManager {
@Override
protected void createWebDriver() {
// TODO Auto-generated method stub
this.driver = new FirefoxDriver();
}
}
InternetExplorerDriverManager.java
package shoppingcart.driver.factory.BrowserType;
import org.openqa.selenium.ie.InternetExplorerDriver;
import shoppingcart.driver.factory.DriverManager;
public class InternetExplorerDriverManager extends DriverManager {
@Override
protected void createWebDriver() {
// TODO Auto-generated method stub
this.driver = new InternetExplorerDriver();
}
}
SafariDriverManager.java
package shoppingcart.driver.factory.BrowserType;
import org.openqa.selenium.safari.SafariDriver;
import shoppingcart.driver.factory.DriverManager;
public class SafariDriverManager extends DriverManager {
@Override
protected void createWebDriver() {
// TODO Auto-generated method stub
this.driver = new SafariDriver();
}
}
Now all Browser class is created now time to create DriverManagerFactory.java class under shoppingcart.driver.factory package which we created prior. It will help us to choose browser type which we want to test on it.
4.1 ) DriverManagerFactory.java class
package shoppingcart.driver.factory;
import shoppingcart.driver.factory.BrowserType.ChromeDriverManager;
import shoppingcart.driver.factory.BrowserType.FireFoxDriverManager;
import shoppingcart.driver.factory.BrowserType.InternetExplorerDriverManager;
import shoppingcart.driver.factory.BrowserType.SafariDriverManager;
public class DriverManagerFactory {
public enum Drivertype{
CHROME,FIREFOX,IE,SAFARI;
}
public static DriverManager getDriverManager(Drivertype type) {
DriverManager driverManager = null;
switch (type) {
case CHROME:
driverManager = new ChromeDriverManager();
break;
case FIREFOX:
driverManager = new FireFoxDriverManager();
break;
case IE:
driverManager = new InternetExplorerDriverManager();
break;
case SAFARI:
driverManager = new SafariDriverManager();
break;
default:
break;
}
return driverManager;
}
}
ScreenShot is mandatory for software tester for Failure TestCases so what we gonna do here adding one class which capture snapshot and created one directory in our project folder with proper date and time.
6) Create one package under src with name shoppingcart.utilities and create one class under that package which take screenshot with name ScreenCapture.java
package shoppingcart.utilities;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
public class ScreenCapture {
public static void captureScreenShot(WebDriver driver) throws IOException {
String directory = "Screenshot/";
String filename = new SimpleDateFormat("dd-mm-yyyy h-m-s").format(new Date());
File dir = new File(directory + filename);
if(!dir.exists()) {
dir.mkdirs();
}
File screenShot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
System.out.println(dir);
FileUtils.copyFileToDirectory(screenShot,dir);
//new File(dir + dateFormat.format(date)+ ".png"));
}
}
7) Now it's time to add our testing Class here i user testng framework for testclass.
Add package name with shoppingcard.testcase.runner and class name is MainTestCaseExecution.java
package shoppingcard.testcase.runner;
import java.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import shoppingcart.driver.factory.DriverManager;
import shoppingcart.driver.factory.DriverManagerFactory;
import shoppingcart.driver.factory.DriverManagerFactory.Drivertype;
import shoppingcart.utilities.ScreenCapture;
public class MainTestCaseExecution {
DriverManager driverManager;
WebDriver driver;
@BeforeClass
public void Setup() {
driverManager = DriverManagerFactory.getDriverManager(Drivertype.CHROME);
driver = driverManager.getWebDriver();
driver.get("http://www.google.com");
}
@Test
public void TC_001_Check_valid_login() {
driver.get("http://www.google.com");
driver.findElement(By.id("test12")).sendKeys("test123");
// Test git repo
}
@AfterMethod
public void tearDown()throws IOException {
ScreenCapture.captureScreenShot(driver);
driver.close();
}
}
// driverManager = DriverManagerFactory.getDriverManager(Drivertype.CHROME); this line is very important when you run this testng code it will run with your chrome browser. if you change Drivertype.IE it will run your selenium code with IE Browser.
Note : That is main thing how to write proper code with use of oops concept and you can reuse your code easily.
Happy coding :)