text

How To Run Selenium Tests In The Headless Testing Mode?

Join

Subscribe to our Newsletter

Selenium WebDriver is a web automation tool that allows running tests against different browsers. These browsers could be internet explorer, firefox, or chrome. for using a particular browser with selenium corresponding driver is required. At the test run, selenium test automation framework launches the corresponding browser called in the script and executes test steps.

Selenium test & headless browser

A headless browser is used to define browser simulation applications that don't have a GUI. These programs perform like any other browser but do not display any UI in the headless browser when selenium test cases run the execute in the background. Almost all modern browsers provide capabilities to run them in a headless mode.

So is headless testing possible via selenium? Yes as selenium test cases support headless testing. In old versions of selenium, testers used the HTMLUnitDriver mainly a headless driver providing non-GUI versions of real browsers like Chrome, Firefox, and Edge. Various configurations are also provided using which you can run this browser in headless mode.

Why use a headless browser for selenium test execution?

Running selenium test automation cases in headless mode provides the following benefits:

Useful in the CI pipeline

It is not always viable to install actual browsers on distant workstations when we need to perform automated test cases remotely on a server or in any of the build and release pipelines for continuous integration servers like Jenkins. To execute automation tests effectively, we may utilize headless browsers.

Beneficial for web scraping

When you want to write a web scraper or data extractor that needs to visit some websites and collect data, headless browsers are a perfect choice. We browse web pages and acquire the data since we aren't concerned with functionality in these circumstances.

Support for various browser versions

The tester may want to replicate different browser versions on the same computer at times. In such a situation, you should utilize a headless browser because most of them allow you to simulate several browser versions.

Faster automation test execution

When compared to actual browser automation, the performance of a headless browser is superior. Real browsers, such as Google Chrome, Firefox, and Internet Explorer, take a long time to load CSS, JavaScript, Images, and open and render HTML. Headless browsers do not need all of this to load and will begin executing tasks without waiting for a page to fully load. When we need to run regression scripts, we may save time by using headless browsers, which are quicker and can render results rapidly.

Multitasking

Headless browsers can assist you with multitasking. While the tests are running in the background, you may do whatever else with your browser or PC. We can save hours that we might otherwise spend looking at a screen.

Let's learn how how to run selenium test automation cases in headless mode. This tutorial will focus on the HTML unit and Phantom JS.

HTMLUnitDriver

HTMLUnitDriver is the most lightweight and most durable headless browser for WebDriver. It is based on HTML unit full stop it is also known as browser driver. It is almost the same as Chrome,  IE or Firefox driver but it doesn't have GUI so one cannot see the test execution on screen.

Features of HTML unit driver

  1. Support for HTTPS and HTTP protocols
  2. HTML response support (clicking links, submitting forms, walking the DOM model of the HTML document, etc.)
  3. Cookie assistance
  4. Support for proxy servers
  5. Basic and NTLM authentication is supported.
  6. JavaScript support is excellent.
  7. Support for the GET and POST submit methods
  8. Ability to tailor the request headers given to the server 
  9. Ability to select whether unsuccessful server answers should throw exceptions or be returned as suitable type pages

How to Use the HTMLUnit Driver with Selenium?

Below are the steps for using the HTMLUnit Driver:

Step 1

Paste the following code into Eclipse. Incorporate the usual Selenium test frameworks library files into the project. There is no need for any additional jar files.

package htmldriver;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class htmlUnitYest

public static void main(String[] args) {

                     // Creating a new instance of the HTML unit driver

                      

                     WebDriver driver = new HtmlUnitDriver();

                      

         // Navigate to Google

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

          

//Locate the search box using its name

                     WebElement element = driver.findElement(By.name("q"));

                     

                    // Enter a search query

                    element.sendKeys("Appsierra");

                   

// Submit the query. Webdriver searches for the form using the text input element automatically

                    // No need to locate/find the submit button

                    element.submit();

                    

            // This code will print the page title

                    System.out.println ("Page title is:" + driver.getTitle());

                    

                    driver.quit();

         }

}

Step 2

Run the code and you will observe that no browser is launched and results are shown in a console.

PhantomJS

Phantom JS is a headless browser with JavaScript API. It is an optimal solution for headless website testing, access, and manipulation in web pages and has a standard DOM API.

Using Phantom JS with Selenium, one needs to use a Ghost Driver. The Ghost driver is an implementation of the WebDriver wire protocol for Phantom JS.

Steps to run Selenium test automation framework using Phantom JS

  1. Eclipse with selenium installed is required.
  2. Download Phantom JS.
  3. Now extract the downloaded folder to program files.
  4. Download the Phantom this driver and add the jar to your project.
  5. Paste the following code into Eclipse.

import java.io.File;

import org.openqa.selenium.by;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.phantomjs.PhantomJSDriver;

 public class phantom {

main(String[] args)

File file = new File ("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");

                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());

                    WebDriver driver = new PhantomJSDriver();

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

                    WebElement element = driver.findElement(By.name("q"));

                    element.sendKeys("Appsierra");

element.submit ();

System.out.println ("Page title is:" + driver.getTitle());

driver.quit ();

           }

}

Execute the code. You will see that the output is shown in the console and that no browser is started.

Summary

Headless browser selenium testing is used to test applications quickly in different browsers and without any visual interruption. The HTML unit driver and PhantomJS are gaining popularity for headless browser testing due to their speed, accuracy, and ease of use. Following a few easy steps, it demonstrates how simply these tools may be connected with other tools and used to perform test code.

Contact Us

Hire vetted developers & testers with Appsierra to build & scale your software products

Trusted by 100x of startups and enterprise companies like

Read More

Subscribe to Our Newsletter