Headless browser execution lets you run tests without opening a visible browser window. This makes tests faster and can run on servers without screens.
When you want to run automated tests on a server without a graphical interface.
When you need faster test runs by skipping browser display.
When running tests in continuous integration pipelines.
When you want to save computer resources during testing.
When debugging is not needed with a visible browser.
Syntax
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
# Your test steps here
driver.quit()
Set options.headless = True to enable headless mode.
Remember to quit the driver to close the browser session.
Examples
This example opens a headless Chrome browser, navigates to example.com, prints the page title, then closes the browser.
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
print(driver.title)
driver.quit()
This example uses Firefox in headless mode to open a page and print the current URL.
Selenium Python
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
driver.get('https://example.com')
print(driver.current_url)
driver.quit()
Sample Program
This test script runs Chrome in headless mode, opens example.com, prints the page title, and closes the browser.
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
page_title = driver.title
print(f'Page title is: {page_title}')
driver.quit()
OutputSuccess
Important Notes
Headless mode may behave slightly differently than normal mode; test carefully.
Use headless mode for faster and resource-friendly test runs.
To debug, run tests without headless mode to see the browser.
Summary
Headless browser execution runs tests without showing the browser window.
It is useful for running tests on servers and speeding up test runs.
Set the browser options to headless before creating the driver.
Practice
(1/5)
1. What is the main advantage of running Selenium tests in headless mode?
easy
A. It requires more system resources than normal mode
B. It allows manual interaction with the browser during tests
C. Tests run faster without opening a visible browser window
D. It disables all JavaScript on the web page
Solution
Step 1: Understand headless mode purpose
Headless mode runs browser tests without showing the browser window, saving time and resources.
Step 2: Compare options
Only Tests run faster without opening a visible browser window correctly states that tests run faster without opening a visible window. Other options are incorrect or unrelated.
Final Answer:
Tests run faster without opening a visible browser window -> Option C
Quick Check:
Headless mode = faster tests without UI [OK]
Hint: Headless means no browser window visible during tests [OK]
Common Mistakes:
Thinking headless disables JavaScript
Assuming headless mode allows manual browser control
Believing headless uses more resources
2. Which of the following is the correct way to enable headless mode in Selenium with Python using Chrome?
easy
A. options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
B. driver = webdriver.Chrome(headless=True)
C. options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
D. driver = webdriver.Chrome()
driver.set_headless(True)
Solution
Step 1: Review Selenium headless syntax
To enable headless mode, you add the '--headless' argument to ChromeOptions and pass it to the driver.
Step 2: Analyze options
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options) correctly uses options.add_argument('--headless') and passes options to Chrome. options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options) incorrectly sets options.headless (not standard). Options B and D use invalid syntax.
Final Answer:
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options) -> Option A
Quick Check:
Use add_argument('--headless') to enable headless [OK]
Hint: Use add_argument('--headless') on ChromeOptions [OK]
Common Mistakes:
Setting options.headless = True (not standard)
Passing headless=True directly to webdriver.Chrome()
Calling non-existent set_headless method
3. What will be the output of the following code snippet?
B. The headless argument was added after creating the driver, so it was ignored
C. You must call driver.set_headless(True) after creating the driver
D. You forgot to call driver.quit() to close the window
Solution
Step 1: Check order of setting options
The headless argument must be added to options before creating the driver instance.
Step 2: Identify mistake in code
Here, options.add_argument('--headless') is called after driver creation, so the driver does not run headless.
Final Answer:
The headless argument was added after creating the driver, so it was ignored -> Option B
Quick Check:
Add headless argument before driver creation [OK]
Hint: Add headless option before creating driver instance [OK]
Common Mistakes:
Adding headless argument after driver creation
Calling non-existent set_headless method
Assuming headless unsupported on Chrome
5. You want to run Selenium tests in headless mode on a Linux server without a display. Which combination of steps is correct to ensure tests run smoothly?
hard
A. Use ChromeOptions with '--headless' argument and set '--no-sandbox' and '--disable-dev-shm-usage' arguments
B. Use FirefoxOptions with '--headless' and run tests without any additional arguments
C. Run Chrome without headless mode but use Xvfb to simulate display
D. Use ChromeOptions with '--headless' only; no other arguments needed
Solution
Step 1: Understand Linux server constraints
Linux servers often lack GUI and have limited shared memory, so Chrome needs extra flags to run headless smoothly.
Step 2: Identify required ChromeOptions
Adding '--no-sandbox' and '--disable-dev-shm-usage' helps avoid permission and memory issues on Linux servers.
Step 3: Evaluate options
Use ChromeOptions with '--headless' argument and set '--no-sandbox' and '--disable-dev-shm-usage' arguments correctly includes these flags with '--headless'. Use FirefoxOptions with '--headless' and run tests without any additional arguments misses Linux-specific flags. Run Chrome without headless mode but use Xvfb to simulate display uses Xvfb but not headless mode. Use ChromeOptions with '--headless' only; no other arguments needed misses important flags.
Final Answer:
Use ChromeOptions with '--headless' argument and set '--no-sandbox' and '--disable-dev-shm-usage' arguments -> Option A
Quick Check:
Linux headless Chrome needs extra flags for stability [OK]
Hint: Add '--no-sandbox' and '--disable-dev-shm-usage' on Linux [OK]
Common Mistakes:
Using headless without Linux-specific flags
Assuming Firefox needs no extra setup
Relying on Xvfb instead of headless mode
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.