Automation Using Selenium Webdriver

Thursday, 6 October 2016

How to disable Selenium Testcases using TestNG Feature

How to disable Selenium Testcases using TestNG Feature




Welcome to Selenium Tutorial, Today we are going to discuss very silent feature of TestNG which allow us to enable or disable our test case based on our requirement.

Why to Disable Selenium Test cases?

Before moving forward you should have Eclipse TestNG setup ready if still not configured then please doSelenium Eclipse setup now.
Once our test suite size will increase day by day then chances are high that you don’t want to execute some test cases.
Ok so let’s consider a scenario that you have written 10 testcases but now you want to execute only 5 testcase because other 5 are working correctly

How to Disable Selenium Test cases?

In TestNG we can achieve this by simply adding enable attribute and can set value to true/false.
If test case enable as false them while running test cases TestRunner simply will ignore this testcase and will only run testcase whose enable is set to true.
Note- By default @Test is set to enable
Scenario – I have 3 test case but I want to execute only 2 test case.
Precondition- TestNG should be installed

Program for – Disable Selenium Test cases

import org.testng.annotations.Test;
public class TestEnableTC {
@Test
public void testLoginApp(){
System.out.println("User is able to login successfully");
}
@Test(enabled=false)
public void testRegisteruser(){
System.out.println("User is able to register successfully");
}
@Test
public void testLogoutApp(){
System.out.println("User is able to logout successfully");
}
}






Wednesday, 5 October 2016

What is Cross Browser Testing in TestNG

                               What is Cross browser testing            
Cross browser, testing refers to testing the application in multiple browsers like IE, Chrome, Firefox so that we can test our application effectively.IE, Chrome, Firefox so that we can test our application effectively.

Cross browser, testing is very important concept in Automation because here the actual automation comes into the picture.

Example- Suppose if you have 20 test cases that you have to execute manually, so it is not a big deal right we can execute in 1 day or 2 days. However, if the same test cases you have to execute in five browsers it means 100 test cases then probably you will take one week or more than one week to do the same and it will be quite boring as well.

If you automate these 20 test cases and run them then it will not take more than one or two hour depends on your test case complexity.

Cross Browser Testing using Selenium Webdriver

To achieve this we will use TestNG parameter feature, we will pass parameter from TestNG.xml file, and based on our parameter Selenium will initiate our browsers.

In this scenario, we will run the same testcase with two different browser parallel.

Step 1- Write testcase
---------------------------------

package SampleTestcases;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestCase1 {

@Test

// Here this parameters we will take from testng.xml
@Parameters("Browser")
public  void test1(String browser) {

if(browser.equalsIgnoreCase("FF")){

WebDriver driver=new FirefoxDriver();

driver.manage().window().maximize();

driver.get("http://www.facebook.com");

driver.quit();

}
else if(browser.equalsIgnoreCase("IE")){

System.setProperty("webdriver.ie.driver", "./server/IEDriverServer.exe");

WebDriver driver=new InternetExplorerDriver();

driver.manage().window().maximize();

driver.get("http://www.facebook.com");

driver.quit();
}
}

}
 Step 2- Create testng.xml and specify
------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
Here parallel is an attribute which specify the mode of execution and thread-count specify how many browser should open
<suite name="Suite" parallel="tests" thread-count="2">

<test name="Test">

<parameter name="Browser" value="FF" />

<classes>

<class name="SampleTestcases.TestCase1"/>

</classes>

</test>

<test name="Test1">

<parameter name="Browser" value="IE" />

<classes>

<class name="SampleTestcases.TestCase1"/>

</classes>

</test>

</suite>
Step 3- Run this xml file refer the below screenshot
------------------------------------------------------

Note- To create testng.xml- Right, click on your testcase then go to TestNG then convert to TestNG> It will generate testng.xml then make changes as per above xml file and finish. You will get testng.xml file inside the project


























Tuesday, 4 October 2016

Different ways to get all "404 page not found" links using Selenium WebDriver

In this post, I will explain the most convenient way using Selenium WebDriver to get all the links from web page and verifying each page contains specific like 404 or Page not found in different ways.

//Following ways to identify 404 links
By using page title
By using page source
By using response code of page URL     
  
Please find the below code for the same.
Sample Code:
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class GetAllLinks {
 public WebDriver driver;
 ArrayList<String> al ;
 @BeforeClass
 public void setup(){
  driver = new FirefoxDriver();
  driver.get("http://www.facebook.com/");
  driver.manage().window().maximize();
  
 }
 @Test
 public void identifyBrokenAnd404Links() throws MalformedURLException, IOException{
  
      al = new ArrayList<String>();
  
    //identifying total number of URls in a page
    List<WebElement> links = driver.findElements(By.tagName("a")); 
    System.out.println(links.size());
   
           //for Getting all links from page
          for (int i = 0;i<links.size(); i++) {
      
        //get one by one URL href value
        String URL=links.get(i).getAttribute("href"); 
       
        //Removing unwanted URLS based on http or https
        if(links.get(i).getAttribute("href").contains("https")||links.get(i).getAttribute("href").contains("http"))
        {
        System.out.println(URL);
       
         //storing all in URL's in array list
         al.add(URL);
       
        }
          }
     
          //Identifying  broken and 404 links
         
          for(int i=0;i<al.size();i++){
           
           //Navigating each URL
           driver.get(al.get(i));
           
           //getting response Code for the link
           int statusCode= ResponseCode(al.get(i));

           //verifying 404 links using page title
           
           if(driver.getTitle().contains("404")){
            
            System.out.println("404 link is  "+al.get(i));
            
           }
           
           //verifying 404 links using page source
           else if(driver.getPageSource().contains("404 page not found")){
            
            System.out.println("404 link is  "+al.get(i));
            
           }
           //verifying 404 links using status code
           else if(statusCode==404){
            
            System.out.println("404 link is  "+al.get(i));
           } 
           
           
          } 
  }
    //method for generating response code for URL
     public static int ResponseCode(String URL) throws MalformedURLException, IOException {     
        URL url = new URL(URL); 
        HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 
        huc.setRequestMethod("GET"); 
        huc.connect(); 
        return huc.getResponseCode(); 
     } 

}