This tutorial explains the steps to run the Selenium tests for Chrome browser and Firefox in headless mode. We are going to run the tests in Selenium 4.
There are 2 ways to add dependencies to the Selenium project.
Manually add the dependencies to the project
Download Selenium Version from here
Download Microsoft Edge Binary from here
Download the latest version of WebDriverManager
Once the Selenium and WebDriverManager folders are downloaded, unzip the folder. Once the zip file is extracted, reference these jar files in the project. For this, navigate to project properties and click Build Path-> Configure Build Path in Eclipse. Click “Add External Jars“. After clicking on “Add External JARs“, selected all the extracted JARs. The JARs files are present in the project.
Add the below dependencies to pom.xml or build.gradle
Selenium 4
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.1.2</version>
</dependency>
What is headless browser?
A headless browser is like any other browser, but without a Head/GUI (Graphical User Interface). A headless browser is used to automate the browser without launching the browser. While the tests are running, we could not see the browser, but we can see the test results coming on the console.
We know that to execute Selenium automation scripts on browsers like edge, we must download the binary files of EDGE driver – msedgedriver. After this, we need to set the path to these binaries in the automation script or add the classpath location. Here, we want to execute Selenium WebDriver automation scripts on the Microsoft Edge browser, then you need first to download msedgedriver.exe and then use the System.setProperty method to set its path as follows:
// Set the path of EdgeDriver
System.setProperty("webdriver.edge.driver",
"C:\\Users\\Vibha\\Software\\edgedriver_win64\\msedgedriver.exe");
The complete program looks like as shown below:
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
public class EdgeHeadlessInSelenium4 {
public static void main(String[] args) {
// Set the path of EdgeDriver
System.setProperty("webdriver.edge.driver",
"C:\\Users\\Vibha\\Software\\edgedriver_win64\\msedgedriver.exe");
// Create an object of Edge Options class
EdgeOptions edgeOptions = new EdgeOptions();
// pass the argument –headless to Edge Options class.
edgeOptions.addArguments("--headless");
// Create an object of WebDriver class and pass the Edge Options object as
// an argument
WebDriver driver = new EdgeDriver(edgeOptions);
System.out.println("Executing Edge Driver in Headless mode..");
driver.get("https://duckduckgo.com/");
System.out.println("Title of Page :" + driver.getTitle());
System.out.println("Page URL : " + driver.getCurrentUrl());
// Close the driver
driver.close();
}
}

How to run headless Microsoft Edge Tests in Selenium using WebDriverManager?
WebDriverManager Maven Dependency
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.1.0</version>
</dependency>
WebDriverManager has an automated way to download browser executables(exes) or binaries. It supports different browsers like Chrome, Firefox, Microsoft Edge, Internet Explorer, Opera, or PhantomJS.
WebDriverManager.edgedriver().setup: checks for the latest version of the specified WebDriver binary. If the binaries are not present on the machine, then it will download the WebDriver binaries. Next, it instantiates the Selenium WebDriver instance with the EdgeDriver.
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import io.github.bonigarcia.wdm.WebDriverManager;
public class EdgeHeadlessWithWebDriverManagerInSelenium4 {
public static void main(String[] args) {
// WebDriverManager downloads Edge browser executables or binaries.
WebDriverManager.edgedriver().setup();
// Create an object of Edge Options class
EdgeOptions edgeOptions = new EdgeOptions();
// pass the argument –headless to Edge Options class.
edgeOptions.addArguments("--headless");
// Create an object of WebDriver class and pass the Edge Options object as
// an argument
WebDriver driver = new EdgeDriver(edgeOptions);
System.out.println("Executing Edge Driver in Headless mode..");
driver.get("https://www.bing.com/");
System.out.println("Title of Page :" + driver.getTitle());
System.out.println("Page URL : " + driver.getCurrentUrl());
// Close the driver
driver.close();
}
}

Congratulations on making it through this tutorial and hope you found it useful! Happy Learning!! Cheers!!