or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

console-logging.mddomain-management.mdindex.mdjavascript-integration.mdnetwork-operations.mdruntime-events.mdtarget-management.mdversion-system.md
tile.json

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

Chrome DevTools Protocol (CDP) bindings for Selenium WebDriver version 138

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.seleniumhq.selenium/selenium-devtools-v138@4.35.x

To install, run

npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-devtools-v138@4.35.0

index.mddocs/

Selenium DevTools v138

Chrome DevTools Protocol (CDP) bindings for Selenium WebDriver version 138, enabling low-level browser interaction and automation beyond standard WebDriver capabilities. This package provides Java bindings that allow developers to interact with Chrome/Chromium browsers through the DevTools interface for advanced debugging, monitoring, and automation scenarios.

Package Information

  • Package Name: org.seleniumhq.selenium:selenium-devtools-v138
  • Package Type: Maven
  • Language: Java
  • Version: 4.35.0
  • Installation: Add to your Maven dependencies:
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-devtools-v138</artifactId>
    <version>4.35.0</version>
</dependency>

Core Imports

import org.openqa.selenium.devtools.v138.*;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.chrome.ChromeDriver;

For specific domains:

import org.openqa.selenium.devtools.v138.v138Domains;
import org.openqa.selenium.devtools.v138.v138Events;
import org.openqa.selenium.devtools.v138.v138Javascript;
import org.openqa.selenium.devtools.v138.v138Network;
import org.openqa.selenium.devtools.v138.v138Log;
import org.openqa.selenium.devtools.v138.v138Target;

For public API usage:

import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
import org.openqa.selenium.Credentials;

Basic Usage

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v138.v138Domains;

// Create Chrome driver and get DevTools
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();

// Create and use v138 domains
devTools.createSession();
v138Domains domains = new v138Domains(devTools);

// Enable console logging
devTools.send(domains.log().enable());

// Listen for console events (using Events domain)
domains.events().addConsoleListener(console -> 
    System.out.println("Console " + console.getType() + ": " + 
        console.getArgs().get(0)));

// Navigate to a page
driver.get("https://example.com");

// Clean up
devTools.close();
driver.quit();

Architecture

The v138 package implements Chrome DevTools Protocol version 138 through a layered architecture:

  • Service Registration: v138CdpInfo provides automatic version discovery via Java ServiceLoader
  • Domain Aggregation: v138Domains serves as the main entry point, providing access to all CDP domains
  • Specialized Domains: Individual domain implementations (v138Network, v138Javascript, etc.) wrap generated CDP classes
  • Protocol Abstraction: All classes implement idealized interfaces from org.openqa.selenium.devtools.idealized.*
  • Version Compatibility: Designed for Chrome version 138 with backward/forward compatibility within a 5-version range

Capabilities

Domain Management

Main entry point providing access to all Chrome DevTools Protocol domains. Essential for initializing and coordinating CDP functionality.

public class v138Domains implements Domains {
    public v138Domains(DevTools devtools);
    public Events<?, ?> events();
    public Javascript<?, ?> javascript();  
    public Network<?, ?> network();
    public Target target();
    public Log log();
}

Domain Management

Runtime Events and Console

Runtime events handling and console monitoring capabilities. Enables capturing JavaScript exceptions, console messages, and runtime diagnostics.

public class v138Events extends Events<ConsoleAPICalled, ExceptionThrown> {
    public v138Events(DevTools devtools);
    protected Event<ConsoleAPICalled> consoleEvent();
    protected Event<ExceptionThrown> exceptionThrownEvent();
    protected ConsoleEvent toConsoleEvent(ConsoleAPICalled event);
    protected JavascriptException toJsException(ExceptionThrown event);
}

Runtime Events

JavaScript Execution and Binding

JavaScript execution environment management and bidirectional communication setup. Provides script injection, binding management, and page-level script control.

public class v138Javascript extends Javascript<ScriptIdentifier, BindingCalled> {
    public v138Javascript(DevTools devtools);
    protected Command<ScriptIdentifier> addScriptToEvaluateOnNewDocument(String script);
    protected Command<Void> removeScriptToEvaluateOnNewDocument(ScriptIdentifier id);
    protected Command<Void> doAddJsBinding(String scriptName);
    protected Command<Void> doRemoveJsBinding(String scriptName);
}

JavaScript Integration

Network Monitoring and Interception

Network traffic monitoring, request/response interception, and authentication handling. Essential for API testing, performance monitoring, and request modification.

public class v138Network extends Network<AuthRequired, RequestPaused> {
    public v138Network(DevTools devTools);
    protected Command<Void> setUserAgentOverride(UserAgent userAgent);
    protected Command<Void> enableNetworkCaching();
    protected Command<Void> disableNetworkCaching();
    protected Event<AuthRequired> authRequiredEvent();
    protected Event<RequestPaused> requestPausedEvent();
    public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq);
}

Network Operations

Console Logging

Console log management and event streaming. Provides access to browser console output with level filtering and timestamp conversion.

public class v138Log implements org.openqa.selenium.devtools.idealized.log.Log {
    public Command<Void> enable();
    public Command<Void> clear();
    public Event<LogEntry> entryAdded();
}

Console Logging

Target Management

Browser target (tab/window) management and session control. Enables working with multiple browser contexts and coordinating cross-target operations.

public class v138Target 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);
    public Command<Void> setAutoAttach();
    public Event<TargetID> detached();
}

Target Management

Version Registration

Service registration for automatic CDP version discovery. Handles integration with Selenium's version selection mechanism.

@AutoService(CdpInfo.class)
public class v138CdpInfo extends CdpInfo {
    public v138CdpInfo();
}

Version System

Types

// Core DevTools integration
interface Domains {
    Events<?, ?> events();
    Javascript<?, ?> javascript();
    Network<?, ?> network();
    Target target();
    Log log();
}

// Command pattern for CDP operations
interface Command<T> {
    String getMethod();
    Map<String, Object> getParams();
}

// Event streaming for CDP notifications
interface Event<T> {
    String getMethod();
    Function<JsonInput, T> map();
}

// Network interception types
class UserAgent {
    String userAgent();
    String acceptLanguage();
    String platform();
}

// Target management types
class TargetInfo {
    TargetID getTargetId();
    String getType();
    String getTitle();
    String getUrl();
    Boolean getAttached();
    Optional<TargetID> getOpenerId();
}

class SessionID {
    String toString();
}

class TargetID {
    String toString();
}

// Console and logging types
class ConsoleEvent {
    String getType();
    Instant getTimestamp();
    List<Object> getArgs();
}

class LogEntry {
    String getSource();
    org.openqa.selenium.logging.LogEntry getEntry();
}

// Functional interfaces for API methods
@FunctionalInterface
interface Consumer<T> {
    void accept(T t);
}

@FunctionalInterface  
interface Predicate<T> {
    boolean test(T t);
}

@FunctionalInterface
interface Supplier<T> {
    T get();
}

@FunctionalInterface
interface Filter {
    boolean test(HttpRequest request);
}

// Authentication types
class Credentials {
    Credentials(String username, String password);
    String getUsername();
    String getPassword();
}

// Script management types
class ScriptId {
    String toString();  // Unique identifier for pinned scripts
}