CtrlK
BlogDocsLog inGet started
Tessl Logo

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

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

Pending
Overview
Eval results
Files

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
}

Install with Tessl CLI

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