Chrome DevTools Protocol version 115 bindings for Selenium Java WebDriver enabling programmatic browser debugging capabilities
—
Central access point for all Chrome DevTools Protocol domains, providing unified initialization and lifecycle management through the v115Domains class.
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();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());The v115Domains constructor initializes domains in a specific order to ensure proper dependency management:
v115Events) - Initialized first with DevTools connectionv115Javascript) - Initialized with DevTools connectionv115Log) - Initialized without dependenciesv115Network) - Initialized with DevTools connectionv115Target) - Initialized without dependencies// DevTools parameter is validated using Selenium's Require utility
public v115Domains(DevTools devtools) {
Require.nonNull("DevTools", devtools);
// ... initialization
}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.
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