Chrome DevTools Protocol version 129 bindings for Selenium WebDriver.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Selenium 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();
}