Selenium TestNG Examples
I) Executing multiple classes using XML file
@BeforeMethod - executes earlier every exam example inwards a class
@AfterMethod -executes later on every exam example inwards class
---------------
@BeforeClass -executes earlier all exam cases inwards a class
@AfterClass - executes later on all exam cases inwards a class
--------------------------------
@BeforeTest - executes earlier all exam cases from all classes inwards XML file
@AfterTest -executes later on all exam cases from all classes inwards XML file
------------------------------------------------
XML file for executing multiple classes:
<suite name="Suite" >
<test name="Test">
<classes>
<class name="seleniumTests.Abcd1"/>
<class name="seleniumTests.Abcd2"/>
</classes>
</test>
</suite>
-----------------------
Class File 1
public bird Abcd1 {
@BeforeTest
populace void Login(){
System.out.println("Login Successful");
}
@AfterTest
populace void Logout(){
System.out.println("Logout Successful");
}
@Test (priority = 1)
populace void FundTransfer (){
System.out.println("Fund Transfer Successful");
}
@Test (priority=3)
populace void PrepaidRecharge(){
System.out.println("Prepaid Recharge Successful");
}
@Test (priority=2)
populace void BillPayments(){
System.out.println("Bill Payments Successful");
}
}
-----------------------------------------------
Class File 2
public bird Abcd2 {
/*@BeforeMethod
populace void Login() {
System.out.println("Login Successful");
}
@AfterMethod
populace void Logout() {
System.out.println("Logout Successful");
}*/
@Test(priority=1)
populace void Search() {
System.out.println("Search Successful");
}
@Test(priority=2)
populace void AdvancedSearch() {
System.out.println("Advanced Search Successful");
}
}
---------------------------------------------------------------
II) Grouping Test Cases
XML file
<suite name="Suite">
<test name="Test">
<groups>
<run>
<include advert ="regression"/>
</run>
</groups>
<classes>
<class name="seleniumTests.GroupingTests"/>
</classes>
</test>
</suite>
----------------------------
Class File
public bird GroupingTests {
@BeforeGroups (groups ="regression")
populace void Login(){
System.out.println("Login Successful");
}
@AfterGroups (groups ="regression")
populace void Logout(){
System.out.println("Logout Successful");
}
@Test (groups ={"sanity"})
populace void FundTransfer (){
System.out.println("Fund Transfer Successful");
}
@Test (groups ={"sanity", "regression"})
populace void Search (){
System.out.println("Search Successful");
}
@Test (groups ={"regression"})
populace void PrepaidRecharge(){
System.out.println("Prepaid Recharge Successful");
}
@Test (groups ={"regression"})
populace void BillPayments(){
System.out.println("Bill Payments Successful");
}
}
-----------------------------------------------
III) Data driven Testing using DataProvider Annotation
public bird DataDriven {
@Test (dataProvider ="testdata")
populace void Addition(String val1, String val2, String val3){
int a = Integer.parseInt(val1);
int b = Integer.parseInt(val2);
int c = Integer.parseInt(val3);
int number = a + b + c;
System.out.println(result);
}
@DataProvider(name="testdata")
public Object [] [] readExcel() throws BiffException, IOException{
File f = novel File("C:/Users/gcreddy/Desktop/Input.xls");
Workbook w = Workbook.getWorkbook(f);
Sheet sec = w.getSheet(0);
int rows = s.getRows();
int columns = s.getColumns();
//System.out.println(rows);
// System.out.println(columns);
String InputData [] [] = novel String [rows] [columns];
for (int i = 0; i<rows; i++){
for (int j=0; j<columns; j++){
Cell c = s.getCell(j, i);
InputData [i] [j] = c.getContents();
//System.out.println(InputData [i][j]);
}
}
return InputData;
}
}
-----------------------------------------------------
IV) Parallel Test execution
Parallel exam execution using TestNG (using unmarried machine/computer)
Parallel exam execution Using Selenium Grid (using multiple computers)
----------------------------------------
Take tests together with execute using dissimilar browsers (IE, Firefox, together with Chrome)
---------------------------------------------
Steps:
Before Class - Launch Browsers (Firefox, Internet Explorer together with Chrome)
Execute Tests on all Browsers
After Class - Close all browsers
--------------------------------
Class File
public bird ParallelTests {
populace WebDriver driver;
@Parameters("browser")
@BeforeClass
populace void LunchBrowser(String browser) {
if(browser.equalsIgnoreCase("FF")) {
driver = novel FirefoxDriver();
}
else if (browser.equalsIgnoreCase("IE")) {
System.setProperty("webdriver.ie.driver", "E:/IEDriverServer.exe");
driver = novel InternetExplorerDriver();
}
else if (browser.equalsIgnoreCase("CH")) {
System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe");
driver = novel ChromeDriver();
}
driver.get("http://www.google.com");
}
@Test
populace void VerifyPageTitle() throws InterruptedException {
Assert.assertEquals(driver.getTitle(), "Google");
}
@AfterClass
populace void CloseBrowsers() {
driver.quit();
}
}
-------------------------------
XML file
<suite name="Suite" parallel="tests" thread-count ="3">
<test name="FireFoxTests">
<parameter advert = "browser" value = "FF"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
<test name="IETests">
<parameter advert = "browser" value = "CH"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
<test name="ChromeTests">
<parameter advert = "browser" value = "IE"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
</suite>
----------------------------------------------------
Sumber http://www.gcreddy.com/
I) Executing multiple classes using XML file
@BeforeMethod - executes earlier every exam example inwards a class
@AfterMethod -executes later on every exam example inwards class
---------------
@BeforeClass -executes earlier all exam cases inwards a class
@AfterClass - executes later on all exam cases inwards a class
--------------------------------
@BeforeTest - executes earlier all exam cases from all classes inwards XML file
@AfterTest -executes later on all exam cases from all classes inwards XML file
------------------------------------------------
XML file for executing multiple classes:
<suite name="Suite" >
<test name="Test">
<classes>
<class name="seleniumTests.Abcd1"/>
<class name="seleniumTests.Abcd2"/>
</classes>
</test>
</suite>
-----------------------
Class File 1
public bird Abcd1 {
@BeforeTest
populace void Login(){
System.out.println("Login Successful");
}
@AfterTest
populace void Logout(){
System.out.println("Logout Successful");
}
@Test (priority = 1)
populace void FundTransfer (){
System.out.println("Fund Transfer Successful");
}
@Test (priority=3)
populace void PrepaidRecharge(){
System.out.println("Prepaid Recharge Successful");
}
@Test (priority=2)
populace void BillPayments(){
System.out.println("Bill Payments Successful");
}
}
-----------------------------------------------
Class File 2
public bird Abcd2 {
/*@BeforeMethod
populace void Login() {
System.out.println("Login Successful");
}
@AfterMethod
populace void Logout() {
System.out.println("Logout Successful");
}*/
@Test(priority=1)
populace void Search() {
System.out.println("Search Successful");
}
@Test(priority=2)
populace void AdvancedSearch() {
System.out.println("Advanced Search Successful");
}
}
---------------------------------------------------------------
II) Grouping Test Cases
XML file
<suite name="Suite">
<test name="Test">
<groups>
<run>
<include advert ="regression"/>
</run>
</groups>
<classes>
<class name="seleniumTests.GroupingTests"/>
</classes>
</test>
</suite>
----------------------------
Class File
public bird GroupingTests {
@BeforeGroups (groups ="regression")
populace void Login(){
System.out.println("Login Successful");
}
@AfterGroups (groups ="regression")
populace void Logout(){
System.out.println("Logout Successful");
}
@Test (groups ={"sanity"})
populace void FundTransfer (){
System.out.println("Fund Transfer Successful");
}
@Test (groups ={"sanity", "regression"})
populace void Search (){
System.out.println("Search Successful");
}
@Test (groups ={"regression"})
populace void PrepaidRecharge(){
System.out.println("Prepaid Recharge Successful");
}
@Test (groups ={"regression"})
populace void BillPayments(){
System.out.println("Bill Payments Successful");
}
}
-----------------------------------------------
III) Data driven Testing using DataProvider Annotation
public bird DataDriven {
@Test (dataProvider ="testdata")
populace void Addition(String val1, String val2, String val3){
int a = Integer.parseInt(val1);
int b = Integer.parseInt(val2);
int c = Integer.parseInt(val3);
int number = a + b + c;
System.out.println(result);
}
@DataProvider(name="testdata")
public Object [] [] readExcel() throws BiffException, IOException{
File f = novel File("C:/Users/gcreddy/Desktop/Input.xls");
Workbook w = Workbook.getWorkbook(f);
Sheet sec = w.getSheet(0);
int rows = s.getRows();
int columns = s.getColumns();
//System.out.println(rows);
// System.out.println(columns);
String InputData [] [] = novel String [rows] [columns];
for (int i = 0; i<rows; i++){
for (int j=0; j<columns; j++){
Cell c = s.getCell(j, i);
InputData [i] [j] = c.getContents();
//System.out.println(InputData [i][j]);
}
}
return InputData;
}
}
-----------------------------------------------------
IV) Parallel Test execution
Parallel exam execution using TestNG (using unmarried machine/computer)
Parallel exam execution Using Selenium Grid (using multiple computers)
----------------------------------------
Take tests together with execute using dissimilar browsers (IE, Firefox, together with Chrome)
---------------------------------------------
Steps:
Before Class - Launch Browsers (Firefox, Internet Explorer together with Chrome)
Execute Tests on all Browsers
After Class - Close all browsers
--------------------------------
Class File
public bird ParallelTests {
populace WebDriver driver;
@Parameters("browser")
@BeforeClass
populace void LunchBrowser(String browser) {
if(browser.equalsIgnoreCase("FF")) {
driver = novel FirefoxDriver();
}
else if (browser.equalsIgnoreCase("IE")) {
System.setProperty("webdriver.ie.driver", "E:/IEDriverServer.exe");
driver = novel InternetExplorerDriver();
}
else if (browser.equalsIgnoreCase("CH")) {
System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe");
driver = novel ChromeDriver();
}
driver.get("http://www.google.com");
}
@Test
populace void VerifyPageTitle() throws InterruptedException {
Assert.assertEquals(driver.getTitle(), "Google");
}
@AfterClass
populace void CloseBrowsers() {
driver.quit();
}
}
-------------------------------
XML file
<suite name="Suite" parallel="tests" thread-count ="3">
<test name="FireFoxTests">
<parameter advert = "browser" value = "FF"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
<test name="IETests">
<parameter advert = "browser" value = "CH"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
<test name="ChromeTests">
<parameter advert = "browser" value = "IE"/>
<classes>
<class name="seleniumTests.ParallelTests"/>
</classes>
</test>
</suite>
----------------------------------------------------