CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-seleniumhq-selenium--selenium-api

Selenium WebDriver core API for automating web browsers across different platforms and programming languages.

Pending
Overview
Eval results
Files

configuration.mddocs/

Browser Configuration

Comprehensive capability system for configuring browser options, proxy settings, platform preferences, and authentication using the Capabilities interface hierarchy.

Capabilities

Capabilities Interface

Core interface for browser capabilities providing platform, version, and feature information.

/**
 * Capabilities interface for browser configuration and feature detection
 * Provides access to browser name, version, platform, and custom capabilities
 */
interface Capabilities {
    /**
     * Get browser name
     * @return Browser name (e.g., "chrome", "firefox", "safari")
     */
    String getBrowserName();
    
    /**
     * Get browser version
     * @return Browser version string
     */
    String getBrowserVersion();
    
    /**
     * Get platform information
     * @return Platform enum value
     */
    Platform getPlatform();
    
    /**
     * Get platform name as string
     * @return Platform name (e.g., "Windows", "Mac", "Linux")
     */
    String getPlatformName();
    
    /**
     * Get specific capability value
     * @param capabilityName - Name of capability to retrieve
     * @return Capability value or null if not set
     */
    Object getCapability(String capabilityName);
    
    /**
     * Get all capability names
     * @return Set of all capability names
     */
    Set<String> getCapabilityNames();
    
    /**
     * Convert capabilities to Map
     * @return Map representation of all capabilities
     */
    Map<String, Object> asMap();
}

MutableCapabilities Class

Mutable implementation of Capabilities interface allowing runtime configuration changes.

/**
 * MutableCapabilities class providing modifiable browser capabilities
 * Extends Capabilities with methods to set and modify capability values
 */
class MutableCapabilities implements Capabilities {
    /**
     * Create empty MutableCapabilities
     */
    MutableCapabilities();
    
    /**
     * Create MutableCapabilities from existing capabilities
     * @param other - Capabilities to copy from
     */
    MutableCapabilities(Capabilities other);
    
    /**
     * Create MutableCapabilities from Map
     * @param capabilities - Map of capability name-value pairs
     */
    MutableCapabilities(Map<String, ?> capabilities);
    
    /**
     * Set capability value
     * @param name - Capability name
     * @param value - Capability value
     * @return MutableCapabilities instance for chaining
     */
    MutableCapabilities setCapability(String name, Object value);
    
    /**
     * Merge capabilities from another Capabilities object
     * @param other - Capabilities to merge
     * @return MutableCapabilities instance for chaining
     */
    MutableCapabilities merge(Capabilities other);
}

ImmutableCapabilities Class

Immutable implementation of Capabilities interface providing read-only capability access.

/**
 * ImmutableCapabilities class providing read-only browser capabilities
 * Thread-safe implementation of Capabilities that cannot be modified after creation
 */
class ImmutableCapabilities implements Capabilities {
    /**
     * Create ImmutableCapabilities from Map
     * @param capabilities - Map of capability name-value pairs
     */
    ImmutableCapabilities(Map<String, ?> capabilities);
    
    /**
     * Create ImmutableCapabilities from key-value pairs
     * @param key - First capability name
     * @param value - First capability value
     * @param more - Additional key-value pairs (alternating keys and values)
     */
    ImmutableCapabilities(String key, Object value, Object... more);
}

Proxy Configuration

Proxy server configuration for routing browser traffic through proxy servers.

/**
 * Proxy class for configuring proxy server settings
 * Supports HTTP, HTTPS, FTP, and SOCKS proxy configurations
 */
class Proxy {
    /**
     * Create Proxy with default settings
     */
    Proxy();
    
    /**
     * Set proxy type
     * @param proxyType - Type of proxy (DIRECT, MANUAL, PAC, AUTODETECT, SYSTEM)
     * @return Proxy instance for chaining
     */
    Proxy setProxyType(ProxyType proxyType);
    
    /**
     * Set HTTP proxy server
     * @param httpProxy - Proxy server in format "host:port"
     * @return Proxy instance for chaining
     */
    Proxy setHttpProxy(String httpProxy);
    
    /**
     * Set HTTPS/SSL proxy server
     * @param sslProxy - SSL proxy server in format "host:port"
     * @return Proxy instance for chaining
     */
    Proxy setSslProxy(String sslProxy);
    
    /**
     * Set FTP proxy server
     * @param ftpProxy - FTP proxy server in format "host:port"
     * @return Proxy instance for chaining
     */
    Proxy setFtpProxy(String ftpProxy);
    
    /**
     * Set SOCKS proxy server
     * @param socksProxy - SOCKS proxy server in format "host:port"
     * @return Proxy instance for chaining
     */
    Proxy setSocksProxy(String socksProxy);
    
    /**
     * Set hosts to bypass proxy
     * @param noProxy - Comma-separated list of hosts to bypass
     * @return Proxy instance for chaining
     */
    Proxy setNoProxy(String noProxy);
    
    /**
     * Set proxy authentication username
     * @param socksUsername - Username for SOCKS proxy authentication
     * @return Proxy instance for chaining
     */
    Proxy setSocksUsername(String socksUsername);
    
    /**
     * Set proxy authentication password
     * @param socksPassword - Password for SOCKS proxy authentication
     * @return Proxy instance for chaining
     */
    Proxy setSocksPassword(String socksPassword);
}

enum ProxyType {
    DIRECT, MANUAL, PAC, RESERVED_1, AUTODETECT, SYSTEM
}

Usage Examples

Basic Capabilities Configuration

import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.ImmutableCapabilities;
import org.openqa.selenium.Platform;

// Create mutable capabilities
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("browserVersion", "latest");
capabilities.setCapability("platformName", "Windows 10");

// Add custom capabilities
capabilities.setCapability("enableVNC", true);
capabilities.setCapability("enableVideo", false);
capabilities.setCapability("screenResolution", "1920x1080x24");

// Create immutable capabilities
ImmutableCapabilities immutableCaps = new ImmutableCapabilities(
    "browserName", "firefox",
    "browserVersion", "91.0",
    "platformName", "Linux"
);

// Access capability values
String browserName = capabilities.getBrowserName();
String browserVersion = capabilities.getBrowserVersion();
Platform platform = capabilities.getPlatform();
Object customValue = capabilities.getCapability("enableVNC");

// Convert to map for inspection
Map<String, Object> capsMap = capabilities.asMap();
System.out.println("All capabilities: " + capsMap);

Proxy Configuration

import org.openqa.selenium.Proxy;
import org.openqa.selenium.chrome.ChromeOptions;

// HTTP proxy configuration
Proxy proxy = new Proxy();
proxy.setProxyType(ProxyType.MANUAL);
proxy.setHttpProxy("proxy.company.com:8080");
proxy.setSslProxy("proxy.company.com:8080");

// Exclude certain hosts from proxy
proxy.setNoProxy("localhost,127.0.0.1,*.local");

// SOCKS proxy with authentication
Proxy socksProxy = new Proxy();
socksProxy.setProxyType(ProxyType.MANUAL);
socksProxy.setSocksProxy("socks.proxy.com:1080");
socksProxy.setSocksUsername("proxyuser");
socksProxy.setSocksPassword("proxypass");

// Apply proxy to browser options
ChromeOptions options = new ChromeOptions();
options.setCapability(CapabilityType.PROXY, proxy);

WebDriver driver = new ChromeDriver(options);

Advanced Capabilities Patterns

// Merge capabilities from multiple sources
MutableCapabilities baseCapabilities = new MutableCapabilities();
baseCapabilities.setCapability("browserName", "chrome");
baseCapabilities.setCapability("browserVersion", "latest");

MutableCapabilities testCapabilities = new MutableCapabilities();
testCapabilities.setCapability("enableVNC", true);
testCapabilities.setCapability("name", "My Test");

// Merge test capabilities into base
baseCapabilities.merge(testCapabilities);

// Platform-specific capabilities
MutableCapabilities windowsCapabilities = new MutableCapabilities();
windowsCapabilities.setCapability("platformName", "Windows 10");
windowsCapabilities.setCapability("browserName", "edge");

MutableCapabilities macCapabilities = new MutableCapabilities();
macCapabilities.setCapability("platformName", "macOS Big Sur");
macCapabilities.setCapability("browserName", "safari");

MutableCapabilities linuxCapabilities = new MutableCapabilities();
linuxCapabilities.setCapability("platformName", "Linux");
linuxCapabilities.setCapability("browserName", "firefox");

// Select capabilities based on environment
String osName = System.getProperty("os.name").toLowerCase();
MutableCapabilities platformCaps;
if (osName.contains("windows")) {
    platformCaps = windowsCapabilities;
} else if (osName.contains("mac")) {
    platformCaps = macCapabilities;
} else {
    platformCaps = linuxCapabilities;
}

Grid and Remote Configuration

// Cloud provider capabilities (Sauce Labs example)
MutableCapabilities sauceCapabilities = new MutableCapabilities();
sauceCapabilities.setCapability("platformName", "Windows 10");
sauceCapabilities.setCapability("browserName", "chrome");
sauceCapabilities.setCapability("browserVersion", "latest");
sauceCapabilities.setCapability("sauce:options", Map.of(
    "username", "your-username",
    "accessKey", "your-access-key",
    "name", "My Test Name",
    "build", "Build 123",
    "tags", Arrays.asList("tag1", "tag2")
));

// BrowserStack capabilities
MutableCapabilities browserStackCaps = new MutableCapabilities();
browserStackCaps.setCapability("os", "Windows");
browserStackCaps.setCapability("os_version", "10");
browserStackCaps.setCapability("browser", "Chrome");
browserStackCaps.setCapability("browser_version", "latest");
browserStackCaps.setCapability("bstack:options", Map.of(
    "userName", "your-username",
    "accessKey", "your-access-key",
    "projectName", "My Project",
    "buildName", "Build 123"
));

// Local Selenium Grid capabilities
MutableCapabilities gridCapabilities = new MutableCapabilities();
gridCapabilities.setCapability("browserName", "chrome");
gridCapabilities.setCapability("se:options", Map.of(
    "screenResolution", "1920x1080",
    "enableVNC", true,
    "enableVideo", true
));

// Use with RemoteWebDriver
RemoteWebDriver remoteDriver = new RemoteWebDriver(
    new URL("https://ondemand.saucelabs.com:443/wd/hub"),
    sauceCapabilities
);

Mobile and Device Emulation

// Mobile capabilities for Appium
MutableCapabilities mobileCapabilities = new MutableCapabilities();
mobileCapabilities.setCapability("platformName", "iOS");
mobileCapabilities.setCapability("platformVersion", "14.5");
mobileCapabilities.setCapability("deviceName", "iPhone 12");
mobileCapabilities.setCapability("browserName", "Safari");
mobileCapabilities.setCapability("automationName", "XCUITest");

// Android mobile capabilities
MutableCapabilities androidCapabilities = new MutableCapabilities();
androidCapabilities.setCapability("platformName", "Android");
androidCapabilities.setCapability("platformVersion", "11.0");
androidCapabilities.setCapability("deviceName", "Pixel 4");
androidCapabilities.setCapability("browserName", "Chrome");
androidCapabilities.setCapability("automationName", "UiAutomator2");

// Chrome mobile emulation
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", Map.of(
    "deviceName", "iPhone X"
));

// Custom mobile emulation
Map<String, Object> deviceMetrics = Map.of(
    "width", 375,
    "height", 812,
    "pixelRatio", 3.0
);
chromeOptions.setExperimentalOption("mobileEmulation", Map.of(
    "deviceMetrics", deviceMetrics,
    "userAgent", "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)"
));

Performance and Logging Configuration

// Performance logging capabilities
MutableCapabilities perfCapabilities = new MutableCapabilities();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
logPrefs.enable(LogType.BROWSER, Level.WARNING);
logPrefs.enable(LogType.DRIVER, Level.INFO);

perfCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

// Network throttling (Chrome DevTools)
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches", Arrays.asList("enable-automation"));

// Custom performance flags
chromeOptions.addArguments("--enable-precise-memory-info");
chromeOptions.addArguments("--enable-benchmarking");
chromeOptions.addArguments("--enable-net-benchmarking");

perfCapabilities.merge(chromeOptions);

Security and Privacy Configuration

// Incognito/private browsing
ChromeOptions incognitoOptions = new ChromeOptions();
incognitoOptions.addArguments("--incognito");

FirefoxOptions privateOptions = new FirefoxOptions();  
privateOptions.addArguments("-private");

// Disable web security (for testing only)
ChromeOptions unsafeOptions = new ChromeOptions();
unsafeOptions.addArguments("--disable-web-security");
unsafeOptions.addArguments("--disable-features=VizDisplayCompositor");
unsafeOptions.addArguments("--allow-running-insecure-content");

// Certificate handling
MutableCapabilities certCapabilities = new MutableCapabilities();
certCapabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
certCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

Install with Tessl CLI

npx tessl i tessl/maven-org-seleniumhq-selenium--selenium-api

docs

alerts.md

configuration.md

drivers.md

elements.md

index.md

interactions.md

javascript.md

locators.md

page-objects.md

waits.md

webdriver.md

tile.json