Introduction
Headless Browser Execution is a Selenium feature that allows a web browser to run without displaying its graphical user interface (GUI). Although the browser window is not visible on the screen, Selenium can still perform all browser operations such as opening websites, locating elements, clicking buttons, filling forms, and validating page content.
Headless execution is widely used in automation frameworks because it consumes fewer system resources and executes tests faster than running a normal browser. It is especially useful for Continuous Integration and Continuous Deployment (CI/CD) pipelines where tests run on remote servers without a graphical desktop.
In this tutorial, you will learn what headless browser execution is, why it is used, its syntax, practical examples, real-world applications, common mistakes, best practices, and frequently asked interview questions.
What is Headless Browser Execution?
A Headless Browser is a browser that performs all browser operations without opening a visible browser window.
Selenium communicates with the browser exactly as it does in normal mode, but the browser runs in the background.
Headless mode is commonly supported by:
Google Chrome
Mozilla Firefox
Microsoft Edge
Why Do We Use Headless Browser Execution?
Headless execution is commonly used to:
Execute tests faster.
Reduce CPU and memory usage.
Run tests on CI/CD servers.
Perform background browser automation.
Execute automation on Linux servers without GUI.
Improve large-scale automation performance.
Syntax
Create Chrome Options
options = webdriver.ChromeOptions()
Enable Headless Mode
options.add_argument("--headless=new")
Launch Chrome in Headless Mode
driver = webdriver.Chrome(options=options)
Practical Example
The following example demonstrates how to run Google Chrome in headless mode.
The automation script creates Chrome Options, enables headless mode, launches Chrome without displaying the browser window, opens the Selenium practice website, and verifies the page title.
from selenium import webdriver
# Topic: 8. Browser Configuration - Headless Browser Execution
# Practice site: https://the-internet.herokuapp.com/
#
# Headless mode runs the browser without a visible UI, which is useful for CI
# pipelines and faster test execution.
def test_headless_browser():
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://the-internet.herokuapp.com/")
assert driver.title == "The Internet"
finally:
driver.quit()
Output
Chrome launched successfully in Headless Mode.
Browser window is not visible.
Website opened successfully.
Page Title:
The Internet
Assertion Passed.
Test Executed Successfully.
Understanding the Code
Import WebDriver
from selenium import webdriver
Imports the Selenium WebDriver module.
Create Chrome Options
options = webdriver.ChromeOptions()
Creates a Chrome Options object to configure browser startup.
Enable Headless Mode
options.add_argument("--headless=new")
Starts Chrome in headless mode so that no browser window appears on the screen.
Launch Chrome
driver = webdriver.Chrome(options=options)
Launches Chrome using the configured headless option.
Open the Website
driver.get("https://the-internet.herokuapp.com/")
Navigates to the Selenium practice website.
Verify the Page Title
assert driver.title == "The Internet"
Confirms that the webpage loaded successfully even though the browser is not visible.
Close the Browser
driver.quit()
Ends the browser session.
Browser Execution Flow
Create Chrome Options
│
▼
Enable Headless Mode
│
▼
Launch Chrome
│
▼
Browser Runs in Background
│
▼
Open Website
│
▼
Verify Page Title
│
▼
Assertions Pass
│
▼
Close Browser
Advantages of Headless Browser Execution
Faster test execution.
Lower CPU and memory usage.
Suitable for CI/CD pipelines.
No graphical interface required.
Ideal for cloud and remote server execution.
Supports large-scale automation.
Automation Testing Example
Suppose your Selenium test suite contains 1,000 automated test cases that run every night on a Jenkins server.
Since the server has no graphical desktop environment, Chrome is executed in headless mode.
The automation framework:
Launches Chrome without displaying the browser.
Executes all test cases.
Generates reports.
Closes the browser.
This makes overnight execution faster and more efficient.
Real-World Example
Consider an e-commerce company that automatically checks product availability every hour.
The Selenium script runs on a Linux server without a monitor.
Using headless mode, the automation:
Opens the website.
Searches for products.
Checks stock availability.
Updates the database.
All of this happens without displaying a browser window.
Common Mistakes Beginners Make
Forgetting to Pass Chrome Options
Creating Chrome Options alone does not enable headless mode.
Incorrect
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome()
Correct
driver = webdriver.Chrome(options=options)
Using Deprecated Headless Arguments
Modern Chrome versions recommend using:
options.add_argument("--headless=new")
instead of older headless arguments.
Assuming Headless Means No Browser
The browser still launches and performs all operations—it simply runs without displaying its graphical interface.
Best Practices
Use headless mode for CI/CD pipelines.
Use normal browser mode during debugging.
Always verify application behavior in both normal and headless modes.
Keep browser configuration centralized in your automation framework.
Use the latest browser and Selenium versions.
Always close the browser using
driver.quit().
Conclusion
Headless Browser Execution allows Selenium to automate browsers without displaying the browser window. It improves execution speed, reduces resource usage, and is ideal for automation running on remote servers and CI/CD pipelines.
Headless execution is one of the most widely used browser configuration techniques in modern Selenium automation frameworks.
Frequently Asked Questions (FAQs)
What is Headless Browser Execution?
Headless Browser Execution allows Selenium to automate a browser without displaying its graphical user interface.
How do I enable headless mode in Chrome?
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
How do I launch Chrome in headless mode?
driver = webdriver.Chrome(options=options)
Why is headless mode used?
Headless mode is used to execute tests faster, reduce system resource usage, and run automation on CI/CD servers without a graphical interface.
Can Selenium interact with websites in headless mode?
Yes.
Selenium can perform all browser actions in headless mode just as it does in normal browser mode.
Key Takeaways
Headless Browser Execution runs the browser without displaying its graphical interface.
Headless mode improves automation speed and reduces resource consumption.
Enable headless mode using
options.add_argument("--headless=new").Launch the browser with
webdriver.Chrome(options=options).Headless mode is commonly used in CI/CD pipelines and remote server environments.
Headless browsers can perform all Selenium operations just like normal browsers.
Use normal mode for debugging and headless mode for automated execution.
Headless Browser Execution is a commonly used Selenium feature and an important interview topic.
