CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-seleniumhq-selenium--selenium-devtools-v115

Chrome DevTools Protocol version 115 bindings for Selenium Java WebDriver enabling programmatic browser debugging capabilities

Pending
Overview
Eval results
Files

domain-management.mddocs/

Domain Management

Central access point for all Chrome DevTools Protocol domains, providing unified initialization and lifecycle management through the v115Domains class.

Capabilities

Domains Container

The main entry point for accessing all DevTools domains with proper initialization and dependency management.

/**
 * Main domains container providing access to all CDP domains
 * Implements the idealized Domains interface for version independence
 */
public class v115Domains implements Domains {
    /**
     * Creates a new domains instance with DevTools connection
     * @param devtools DevTools instance for CDP communication
     * @throws org.openqa.selenium.internal.Require.Argument if devtools is null
     */
    public v115Domains(DevTools devtools);
    
    /**
     * Returns the Events domain for console and runtime event handling
     * @return Events domain instance for v115
     */
    public Events<?, ?> events();
    
    /**
     * Returns the Javascript domain for script injection and bindings
     * @return Javascript domain instance for v115
     */
    public Javascript<?, ?> javascript();
    
    /**
     * Returns the Network domain for traffic interception and manipulation
     * @return Network domain instance for v115
     */
    public Network<?, ?> network();
    
    /**
     * Returns the Target domain for tab/window management
     * @return Target domain instance for v115
     */
    public Target target();
    
    /**
     * Returns the Log domain for browser console logging
     * @return Log domain instance for v115
     */
    public Log log();
}

Usage Examples:

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v115.v115Domains;

// Initialize WebDriver and DevTools
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();
devTools.createSession();

// Create domains container
v115Domains domains = new v115Domains(devTools);

// Access individual domains
var events = domains.events();
var javascript = domains.javascript();
var network = domains.network();
var target = domains.target();
var log = domains.log();

// Use domains for automation
events.addConsoleListener(event -> 
    System.out.println("Console: " + event.getType()));
    
javascript.addJsBinding("myCallback");
network.setUserAgent("Custom Agent");

driver.quit();

Service Provider Registration

Automatic registration of CDP version 115 support with Selenium's DevTools infrastructure.

/**
 * CDP version information service provider
 * Automatically registered via @AutoService annotation
 */
@AutoService(CdpInfo.class)
public class v115CdpInfo extends CdpInfo {
    /**
     * Creates CDP info for version 115 with domains factory
     * Registers version 115 and provides v115Domains constructor
     */
    public v115CdpInfo();
}

Usage Examples:

// Service is automatically registered - no manual setup required
// Selenium WebDriver automatically detects CDP v115 support

ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();

// DevTools automatically uses v115 implementation when available
devTools.createSession();

// Access CDP functionality through DevTools
devTools.send(org.openqa.selenium.devtools.v115.runtime.Runtime.enable());

Domain Initialization Order

The v115Domains constructor initializes domains in a specific order to ensure proper dependency management:

  1. Events Domain (v115Events) - Initialized first with DevTools connection
  2. Javascript Domain (v115Javascript) - Initialized with DevTools connection
  3. Log Domain (v115Log) - Initialized without dependencies
  4. Network Domain (v115Network) - Initialized with DevTools connection
  5. Target Domain (v115Target) - Initialized without dependencies

Error Handling

Required Parameter Validation

// DevTools parameter is validated using Selenium's Require utility
public v115Domains(DevTools devtools) {
    Require.nonNull("DevTools", devtools);
    // ... initialization
}

Domain Access

All domain accessor methods return non-null instances that are initialized during construction. No additional null checks are required when using the returned domain objects.

Integration with Idealized APIs

The v115Domains class implements the idealized Domains interface, providing version-independent access to DevTools functionality:

// Can be used polymorphically with other CDP versions
Domains domains = new v115Domains(devTools);

// Standard interface methods work across versions
domains.events().addConsoleListener(listener);
domains.javascript().addJsBinding("binding");
domains.network().setUserAgent("agent");

This design allows applications to work with multiple CDP versions without code changes, as long as they use the idealized interface methods.

Install with Tessl CLI

npx tessl i tessl/maven-org-seleniumhq-selenium--selenium-devtools-v115

docs

domain-management.md

index.md

javascript-integration.md

logging-operations.md

network-operations.md

runtime-events.md

target-management.md

tile.json