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 argumentsoptions.addArguments("--start-maximized");options.addArguments("--disable-notifications");
WebDriver driver = new ChromeDriver(options);from selenium import webdriverfrom selenium.webdriver.chrome.options import Options
options = Options()
# Add argumentsoptions.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 argumentsoptions.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 argumentsoptions.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 sizeoptions.addArguments("--disable-gpu"); // Recommended for Windows
WebDriver driver = new ChromeDriver(options);from selenium import webdriverfrom 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 sizeoptions.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 sizeoptions.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 sizeoptions.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
| Argument | Description |
|---|---|
--headless=new | Run Chrome without UI |
--start-maximized | Start with maximized window |
--window-size=1920,1080 | Set specific window size |
--disable-notifications | Disable notification popups |
--disable-popup-blocking | Allow popups |
--incognito | Start in incognito mode |
--disable-extensions | Disable browser extensions |
--disable-gpu | Disable GPU acceleration |
--no-sandbox | Disable sandbox (for CI/CD) |
--disable-dev-shm-usage | Overcome limited resource problems |
Setting Window Size Programmatically
Window Size Management
Selenium 3 & 4 Stable
// Maximize windowdriver.manage().window().maximize();
// Set specific sizedriver.manage().window().setSize(new Dimension(1920, 1080));
// Set specific positiondriver.manage().window().setPosition(new Point(0, 0));
// Fullscreendriver.manage().window().fullscreen();# Maximize windowdriver.maximize_window()
# Set specific sizedriver.set_window_size(1920, 1080)
# Set specific positiondriver.set_window_position(0, 0)
# Fullscreendriver.fullscreen_window()// Maximize windowawait driver.manage().window().maximize();
// Set specific sizeawait driver.manage().window().setRect({ width: 1920, height: 1080 });
// Set specific positionawait driver.manage().window().setRect({ x: 0, y: 0 });
// Fullscreenawait driver.manage().window().fullscreen();// Maximize windowdriver.Manage().Window.Maximize();
// Set specific sizedriver.Manage().Window.Size = new Size(1920, 1080);
// Set specific positiondriver.Manage().Window.Position = new Point(0, 0);
// Fullscreendriver.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 webdriverfrom 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
- Use headless for CI/CD: Headless mode is faster and doesn’t require a display
- Set explicit window size: Ensure consistent viewport across runs
- Disable unnecessary features: Turn off notifications, popups, and extensions
- Add sandbox flags for containers: Use
--no-sandboxand--disable-dev-shm-usagein Docker - Test in headed mode during development: Easier to debug and see what’s happening
Next Steps
- Finding Elements - Locate elements on the page
- Headless Browsers - Deep dive into headless testing
- Explicit Waits - Handle timing issues reliably
- Selenium Grid - Distributed test execution