Saturday, December 27, 2014

Headless Browser Test in Selenium Webdriver



 Why Headless Browser?

There are times when you don't want a browser popping each time you execute the test.

1.     Lets assume our test running in the continuous integration environment Like
  • jenkins
  • Banboo
Here all test will run on server.So no need any Physical things need to be done like (opening browser).We get result in Logs file at end of test.In this situation we no need to open browser .

  2.We made it to run locally also.
  3.Headless browser is very fast to excute.

In this Program:
·       Navigating to http://automationplace.blogspot.in
·       Verifying the title

Without Headless Browser

Sourcecode :

import java.util.concurrent.TimeUnit;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.testng.Assert;

public class test_headlessbrowser {
      
       @Test
       public void headlessBrowser()
       {
              WebDriver driver=driver = new FirefoxDriver()
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://www.automationplace.blogspot.in");
       
        String title=driver.findElement(By.xpath("//*[@id='header-inner']/div[1]/h1")).getText();
        //this will verify my page title
        System.out.println(title);
        Assert.assertTrue(title.contains("Automationplace"));
       
       }
}
      

Note : The Execution is slow comparing to Headless Browser


The Execution will take 26.591 sec.


WithHeadless Browser:

To run in headless browser we need to change only one thing in the above code.

i.e)WebDriver driver=driver = new HtmlUnitDriver();

The rest of the things is same.

Source code :

import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.testng.Assert;

public class test_headlessbrowser {
      
       @Test
       public void headlessBrowser()
       {
              WebDriver driver=driver = new HtmlUnitDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://www.automationplace.blogspot.in");
       
        String title=driver.findElement(By.xpath("//*[@id='header-inner']/div[1]/h1")).getText();
        //this will verify my page title
        System.out.println(title);
        Assert.assertTrue(title.contains("Automationplace"));
       
       }
}
  

If you Run the above code



The Execution will take only 7.738 sec


Hope you like this post.



    













1 comment:

  1. Hi Prashant,
    My headless tests are getting failed in case of actions and alerts are used in my script. How to make them pass. Scripts with mouse over, action class send keys, drag and drop etc... are the problematic in both httpdriver and phanthomjs driver.
    Thanks
    Siva

    ReplyDelete