Tuesday, 23 April 2019

Single Test case Run parallel with TestNG Framework

1) Create TestNG class.

package com.software.testing;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TC1 {
WebDriver driver;

@Test
public void firstTestCase() {
// Printing Id of the thread on using which test method got executed
System.setProperty("webdriver.chrome.driver", "Your Driver Path");
driver = new ChromeDriver();
driver.get("https://www.google.com");
}
}
2) Now Create testng.xml file into your project folder

<suite name="ParallelTestingGoogle" verbose="1" parallel="tests" thread-count="5">
    <test name="1stExecution">
        <classes>
            <class name="com.software.testing.TC1"></class>
        </classes>
    </test>
    <test name="2ndExecution">
        <classes>
            <class name="com.software.testing.TC1" />
        </classes>
    </test>
    <test name="3rdExecution">
        <classes>
            <class name="com.software.testing.TC1" />
        </classes>
    </test>
    <test name="4thExecution">
        <classes>
            <class name="com.software.testing.TC1" />
        </classes>
    </test>
    <test name="5thExecution">
        <classes>
            <class name="com.software.testing.TC1" />
        </classes>
    </test>
</suite>

Note : Don't forget to specify parallel="tests".

When you run your testNg suite it will open five chrome window and run your test case parallel.

Tuesday, 26 March 2019

Selenium Web driver with multiple browser with oops concept and testng Framework

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 :)

Sunday, 24 February 2019

Mobile Compatibility testing using Selenium Web Driver JAVA

Here I Show you how can you perform different type of mobile browser testing with using chrome driver and in chrome Browser.

import java.io.File;
import java.util.HashMap;
import java.util.Map;


import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class MobileTesting{


public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub

Map<String,String> mobileEmulation = new HashMap<String,String>();
mobileEmulation.put("deviceName","Galaxy S5");
Map<String,Object> chromeOptions = new HashMap<String,Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File("C:\\Users\\testing\\Desktop\\ChromeDriver\\chromedriver.exe"))
                .usingAnyFreePort()
                .build();



WebDriver driver = new ChromeDriver(service,capabilities);
driver.get("http://www.google.com");


}

}



Thursday, 31 January 2019

Handle Multiple Window in Selenium webdriver c#

Handle Multiple Browser tab Using C#

Here , I am going to show you how to handle multiple browser tab and switch browser tabs using selenium web driver c#.



using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Html5;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TestApp.Performance;

using System.Windows.Forms;

namespace TestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver _driver = new FirefoxDriver();
            _driver.Navigate().GoToUrl("https://www.google.com");

            ReadOnlyCollection<string> WindowHandles = _driver.WindowHandles;
            foreach (string item in WindowHandles)
            {
                _driver.SwitchTo().Window(item);
                string browserTitle = _driver.Title;
                string browserPageSource = _driver.PageSource;
                string browserURL = _driver.Url;
            }
            Thread.Sleep(2000);
        }
  
    }

}

Single Test case Run parallel with TestNG Framework

1) Create TestNG class. package com.software.testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome....