Skip to main content
SeleniumDecoded

Browser Options & Configuration

Learn how to configure browser options in Selenium WebDriver, including headless mode, window size, and custom arguments.

Selenium 3 & 4 Stable

Browser options allow you to customize how the browser behaves during test execution. Common configurations include running headless, setting window size, and disabling notifications.

Creating Browser Options

Basic Options Setup
Selenium 3 & 4 Stable
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chrome.ChromeDriver;
ChromeOptions options = new ChromeOptions();
// Add arguments
options.addArguments("--start-maximized");
options.addArguments("--disable-notifications");
WebDriver driver = new ChromeDriver(options);
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# Add arguments
options.add_argument("--start-maximized")
options.add_argument("--disable-notifications")
driver = webdriver.Chrome(options=options)
const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const options = new chrome.Options();
// Add arguments
options.addArguments('--start-maximized');
options.addArguments('--disable-notifications');
const driver = await new Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
using OpenQA.Selenium.Chrome;
var options = new ChromeOptions();
// Add arguments
options.AddArguments("--start-maximized");
options.AddArguments("--disable-notifications");
IWebDriver driver = new ChromeDriver(options);

Headless Mode

Headless mode runs the browser without a visible UI, making tests faster and suitable for CI/CD pipelines.

Headless Chrome
Selenium 4 Stable
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new"); // New headless mode in Chrome 109+
options.addArguments("--window-size=1920,1080"); // Set viewport size
options.addArguments("--disable-gpu"); // Recommended for Windows
WebDriver driver = new ChromeDriver(options);
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless=new") # New headless mode in Chrome 109+
options.add_argument("--window-size=1920,1080") # Set viewport size
options.add_argument("--disable-gpu") # Recommended for Windows
driver = webdriver.Chrome(options=options)
const options = new chrome.Options();
options.addArguments('--headless=new'); // New headless mode in Chrome 109+
options.addArguments('--window-size=1920,1080'); // Set viewport size
options.addArguments('--disable-gpu'); // Recommended for Windows
const driver = await new Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
var options = new ChromeOptions();
options.AddArguments("--headless=new"); // New headless mode in Chrome 109+
options.AddArguments("--window-size=1920,1080"); // Set viewport size
options.AddArguments("--disable-gpu"); // Recommended for Windows
IWebDriver driver = new ChromeDriver(options);

Note: Chrome 109+ introduced a new headless mode (--headless=new) that better matches headed behavior. For older Chrome versions, use --headless.

Common Chrome Arguments

ArgumentDescription
--headless=newRun Chrome without UI
--start-maximizedStart with maximized window
--window-size=1920,1080Set specific window size
--disable-notificationsDisable notification popups
--disable-popup-blockingAllow popups
--incognitoStart in incognito mode
--disable-extensionsDisable browser extensions
--disable-gpuDisable GPU acceleration
--no-sandboxDisable sandbox (for CI/CD)
--disable-dev-shm-usageOvercome limited resource problems

Setting Window Size Programmatically

Window Size Management
Selenium 3 & 4 Stable
// Maximize window
driver.manage().window().maximize();
// Set specific size
driver.manage().window().setSize(new Dimension(1920, 1080));
// Set specific position
driver.manage().window().setPosition(new Point(0, 0));
// Fullscreen
driver.manage().window().fullscreen();
# Maximize window
driver.maximize_window()
# Set specific size
driver.set_window_size(1920, 1080)
# Set specific position
driver.set_window_position(0, 0)
# Fullscreen
driver.fullscreen_window()
// Maximize window
await driver.manage().window().maximize();
// Set specific size
await driver.manage().window().setRect({ width: 1920, height: 1080 });
// Set specific position
await driver.manage().window().setRect({ x: 0, y: 0 });
// Fullscreen
await driver.manage().window().fullscreen();
// Maximize window
driver.Manage().Window.Maximize();
// Set specific size
driver.Manage().Window.Size = new Size(1920, 1080);
// Set specific position
driver.Manage().Window.Position = new Point(0, 0);
// Fullscreen
driver.Manage().Window.FullScreen();

Firefox Options

Firefox Configuration
Selenium 3 & 4 Stable
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
FirefoxOptions options = new FirefoxOptions();
options.addArguments("-headless");
options.addPreference("dom.webnotifications.enabled", false);
WebDriver driver = new FirefoxDriver(options);
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("-headless")
options.set_preference("dom.webnotifications.enabled", False)
driver = webdriver.Firefox(options=options)
const firefox = require('selenium-webdriver/firefox');
const options = new firefox.Options();
options.addArguments('-headless');
options.setPreference('dom.webnotifications.enabled', false);
const driver = await new Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
using OpenQA.Selenium.Firefox;
var options = new FirefoxOptions();
options.AddArguments("-headless");
options.SetPreference("dom.webnotifications.enabled", false);
IWebDriver driver = new FirefoxDriver(options);

Best Practices

  1. Use headless for CI/CD: Headless mode is faster and doesn’t require a display
  2. Set explicit window size: Ensure consistent viewport across runs
  3. Disable unnecessary features: Turn off notifications, popups, and extensions
  4. Add sandbox flags for containers: Use --no-sandbox and --disable-dev-shm-usage in Docker
  5. Test in headed mode during development: Easier to debug and see what’s happening

Next Steps