Chrome DevTools Protocol version 129 bindings for Selenium WebDriver.
npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-devtools-v129@4.27.0Selenium DevTools v129 provides Java bindings for Chrome DevTools Protocol version 129, enabling advanced browser automation capabilities beyond standard WebDriver functionality. It includes domain-specific APIs for network monitoring and manipulation, JavaScript execution and debugging, console log capture, and target management across multiple browser contexts.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools-v129</artifactId>
<version>4.27.0</version>
</dependency>import org.openqa.selenium.devtools.v129.v129Domains;
import org.openqa.selenium.devtools.v129.v129CdpInfo;
import org.openqa.selenium.devtools.DevTools;import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v129.v129Domains;
// Create Chrome driver and get DevTools instance
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();
devTools.createSession();
// Create v129 domains instance for accessing all capabilities
v129Domains domains = new v129Domains(devTools);
// Use domain-specific functionality
devTools.send(domains.log().enable());
// Set up network interception
domains.network().prepareToInterceptTraffic();
// Listen for console events
domains.events().addConsoleListener(event -> {
System.out.println("Console: " + event.getType() + " - " + event.getMessages());
});Selenium DevTools v129 is built around the Chrome DevTools Protocol architecture:
v129CdpInfo provides version identification for automatic service bindingv129Domains creates and manages all domain-specific implementationsCentral factory providing access to all v129 DevTools protocol domains.
public class v129Domains implements Domains {
public v129Domains(DevTools devtools);
public Events<?, ?> events();
public Javascript<?, ?> javascript();
public Network<?, ?> network();
public Target target();
public Log log();
}Network domain providing request/response interception, authentication handling, and traffic monitoring.
public class v129Network extends Network<AuthRequired, RequestPaused> {
public v129Network(DevTools devTools);
public Event<RequestPaused> requestPausedEvent();
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq);
}Events domain for capturing console messages and JavaScript exceptions from the browser.
public class v129Events extends Events<ConsoleAPICalled, ExceptionThrown> {
public v129Events(DevTools devtools);
}JavaScript domain providing script injection, binding management, and code execution capabilities.
public class v129Javascript extends Javascript<ScriptIdentifier, BindingCalled> {
public v129Javascript(DevTools devtools);
}Log domain for browser log management and console message capture.
public class v129Log implements org.openqa.selenium.devtools.idealized.log.Log {
public Command<Void> enable();
public Command<Void> clear();
public Event<LogEntry> entryAdded();
}Target domain for managing browser tabs, contexts, and debugging sessions.
public class v129Target implements org.openqa.selenium.devtools.idealized.target.Target {
public Command<List<TargetInfo>> getTargets();
public Command<SessionID> attachToTarget(TargetID targetId);
public Command<Void> detachFromTarget(Optional<SessionID> sessionId, Optional<TargetID> targetId);
}// From Selenium DevTools core
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.Command;
import org.openqa.selenium.devtools.Event;
// Protocol-specific types
import org.openqa.selenium.devtools.v129.runtime.model.ConsoleAPICalled;
import org.openqa.selenium.devtools.v129.runtime.model.ExceptionThrown;
import org.openqa.selenium.devtools.v129.fetch.model.AuthRequired;
import org.openqa.selenium.devtools.v129.fetch.model.RequestPaused;@AutoService(CdpInfo.class)
public class v129CdpInfo extends CdpInfo {
public v129CdpInfo();
}