CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-seleniumhq-selenium--selenium-chromium-driver

Selenium Chrome Driver provides WebDriver implementation for Google Chrome with Chrome DevTools Protocol support, network conditions simulation, permissions management, media casting capabilities, and Chrome-specific service configuration.

Pending
Overview
Eval results
Files

browser-configuration.mddocs/

Browser Configuration

ChromiumOptions provides comprehensive configuration capabilities for Chromium-based browsers including binary paths, command line arguments, extensions, experimental features, and Android-specific settings.

Basic Configuration

Set Browser Binary

Specify the path to the Chrome/Chromium executable.

public T setBinary(File path);
public T setBinary(String path);

Parameters:

  • path (File|String): Absolute or relative path to the browser executable

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Set binary path using string
options.setBinary("/opt/google/chrome/chrome");

// Or using File object
options.setBinary(new File("/usr/bin/chromium-browser"));

Command Line Arguments

Add Arguments

Add command line arguments for browser startup.

public T addArguments(String... arguments);
public T addArguments(List<String> arguments);

Parameters:

  • arguments (String[]|List<String>): Command line arguments to add

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Add individual arguments
options.addArguments("--headless", "--no-sandbox", "--disable-dev-shm-usage");

// Add arguments from list
List<String> args = Arrays.asList("--window-size=1920,1080", "--disable-gpu");
options.addArguments(args);

// Arguments with values (use "=" delimiter)
options.addArguments("--user-data-dir=/tmp/chrome-profile");

Common Arguments:

  • --headless: Run in headless mode
  • --no-sandbox: Disable sandboxing (required in some Docker environments)
  • --disable-dev-shm-usage: Overcome limited resource problems
  • --window-size=width,height: Set initial window size
  • --disable-gpu: Disable GPU acceleration
  • --disable-extensions: Disable all extensions
  • --incognito: Start in incognito mode

Extensions

Add Extension Files

Add Chrome extensions from .crx files.

public T addExtensions(File... paths);
public T addExtensions(List<File> paths);

Parameters:

  • paths (File[]|List<File>): Paths to .crx extension files

Returns: T - ChromiumOptions instance for method chaining

Throws: IllegalArgumentException if any file doesn't exist or isn't a file

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Add single extension
File extension = new File("/path/to/extension.crx");
options.addExtensions(extension);

// Add multiple extensions
options.addExtensions(
    new File("/path/to/extension1.crx"),
    new File("/path/to/extension2.crx")
);

Add Encoded Extensions

Add Chrome extensions from Base64-encoded strings.

public T addEncodedExtensions(String... encoded);
public T addEncodedExtensions(List<String> encoded);

Parameters:

  • encoded (String[]|List<String>): Base64-encoded extension data

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Add encoded extension
String encodedExtension = "UEsDBBQAAAAIABtUJUDh4JfE..."; // Base64 data
options.addEncodedExtensions(encodedExtension);

Advanced Features

Enable BiDi Protocol

Enable WebDriver BiDi protocol support.

public T enableBiDi();

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");
options.enableBiDi();

Set Experimental Options

Configure experimental Chrome options not yet exposed through the API.

public T setExperimentalOption(String name, Object value);

Parameters:

  • name (String): Name of the experimental option
  • value (Object): Value for the experimental option (must be JSON-convertible)

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Enable logging
Map<String, Object> logPrefs = new HashMap<>();
logPrefs.put("browser", "ALL");
logPrefs.put("driver", "ALL");
options.setExperimentalOption("logPrefs", logPrefs);

// Set download directory
options.setExperimentalOption("prefs", Map.of(
    "download.default_directory", "/path/to/downloads"
));

Android Configuration

Set Android Package

Configure the Android package name for mobile testing.

public T setAndroidPackage(String androidPackage);

Parameters:

  • androidPackage (String): Android package name

Returns: T - ChromiumOptions instance for method chaining

Set Android Activity

Configure the Android activity to launch.

public T setAndroidActivity(String activity);

Parameters:

  • activity (String): Android activity class name

Returns: T - ChromiumOptions instance for method chaining

Set Android Device Serial

Specify the Android device serial number.

public T setAndroidDeviceSerialNumber(String serial);

Parameters:

  • serial (String): Device serial number

Returns: T - ChromiumOptions instance for method chaining

Use Running Android App

Configure whether to use an already running Android app.

public T setUseRunningAndroidApp(boolean useIt);

Parameters:

  • useIt (boolean): Whether to use running app

Returns: T - ChromiumOptions instance for method chaining

Set Android Process

Set the process name for the Android WebView.

public T setAndroidProcess(String processName);

Parameters:

  • processName (String): Process name hosting the WebView

Returns: T - ChromiumOptions instance for method chaining

Usage Example:

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Configure for Android Chrome
options.setAndroidPackage("com.android.chrome")
       .setAndroidActivity("com.google.android.apps.chrome.Main")
       .setAndroidDeviceSerialNumber("HT7C1A03042")
       .setUseRunningAndroidApp(false);

Option Merging

ChromiumOptions supports merging configurations from other sources:

Merge Capabilities

protected void mergeInPlace(Capabilities capabilities);
protected void mergeInOptionsFromCaps(String capabilityName, Capabilities capabilities);

These methods handle merging options from existing Capabilities objects, combining arguments, extensions, and other settings intelligently.

Types and Constants

// Constructor for creating ChromiumOptions
public ChromiumOptions(String capabilityType, String browserType, String capability);

// Constants for network conditions
public static final String OFFLINE = "offline";
public static final String LATENCY = "latency";
public static final String DOWNLOAD_THROUGHPUT = "download_throughput";
public static final String UPLOAD_THROUGHPUT = "upload_throughput";

Complete Configuration Example

import org.openqa.selenium.chromium.ChromiumOptions;
import java.io.File;
import java.util.Arrays;
import java.util.Map;

ChromiumOptions<?> options = new ChromiumOptions<>("goog:chromeOptions", "chrome", "chrome");

// Basic configuration
options.setBinary("/opt/google/chrome/chrome")
       .addArguments("--headless", "--no-sandbox", "--disable-dev-shm-usage")
       .addArguments("--window-size=1920,1080");

// Extensions
options.addExtensions(new File("/path/to/extension.crx"));

// Experimental options
options.setExperimentalOption("excludeSwitches", Arrays.asList("enable-automation"))
       .setExperimentalOption("useAutomationExtension", false);

// Enable advanced protocols
options.enableBiDi();

// Android configuration (if testing mobile Chrome)
options.setAndroidPackage("com.android.chrome")
       .setAndroidActivity("com.google.android.apps.chrome.Main");

Error Handling

Common exceptions:

  • IllegalArgumentException: When null parameters are provided or files don't exist
  • SessionNotCreatedException: When extension files cannot be read during session creation

Best Practices

  1. Binary Path: Always specify browser binary path in CI/CD environments
  2. Headless Mode: Use --headless for server environments without displays
  3. Resource Limits: Use --no-sandbox and --disable-dev-shm-usage in containerized environments
  4. Extension Security: Validate extension files before adding them
  5. Experimental Options: Test experimental options thoroughly as they may change between Chrome versions
  6. Method Chaining: Take advantage of fluent interface for clean configuration code

Install with Tessl CLI

npx tessl i tessl/maven-org-seleniumhq-selenium--selenium-chromium-driver

docs

application-launching.md

browser-configuration.md

devtools-protocol.md

index.md

media-casting.md

network-conditions.md

permissions-management.md

service-management.md

webdriver-operations.md

tile.json