or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cdp-domains.mdevents.mdindex.mdjavascript.mdlogging.mdnetwork.mdtargets.md
tile.json

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

Chrome DevTools Protocol (CDP) client library for Chrome version 105, providing Java bindings for browser automation and debugging capabilities

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

To install, run

npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-devtools-v105@4.6.0

index.mddocs/

Selenium DevTools v105

Selenium DevTools v105 provides Java bindings for the Chrome DevTools Protocol (CDP) version 105, enabling programmatic interaction with Chrome browsers for advanced automation, debugging, and monitoring capabilities. This library offers both high-level wrapper classes and direct access to auto-generated CDP domain APIs, making it essential for advanced browser automation scenarios beyond standard WebDriver capabilities.

Package Information

  • Package Name: selenium-devtools-v105
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-devtools-v105</artifactId>
      <version>4.6.0</version>
    </dependency>

Core Imports

import org.openqa.selenium.devtools.v105.V105Domains;
import org.openqa.selenium.devtools.v105.V105CdpInfo;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.HasDevTools;

Basic Usage

// Initialize Chrome driver with DevTools
ChromeDriver driver = new ChromeDriver();
DevTools devTools = driver.getDevTools();
devTools.createSession();

// Access v105 domains
V105Domains domains = new V105Domains(devTools);

// Enable network domain for monitoring
devTools.send(org.openqa.selenium.devtools.v105.network.Network.enable());

// Set up authentication handling using network domain
domains.network().authRequiredEvent().addListener(authRequired -> {
    if (domains.network().getUriFrom(authRequired).contains("secure.example.com")) {
        devTools.send(domains.network().continueWithAuth(authRequired, 
            new UsernameAndPassword("user", "pass")));
    }
});

// Listen for console events
domains.events().consoleEvent().addListener(consoleEvent -> {
    org.openqa.selenium.devtools.events.ConsoleEvent event = 
        domains.events().toConsoleEvent(consoleEvent);
    System.out.println("Console: " + event.getMessages());
});

// Add JavaScript binding for communication
devTools.send(domains.javascript().doAddJsBinding("javaCallback"));
domains.javascript().bindingCalledEvent().addListener(bindingCalled -> {
    String payload = domains.javascript().extractPayload(bindingCalled);
    System.out.println("JavaScript called: " + payload);
});

// Use direct CDP for JavaScript evaluation
devTools.send(org.openqa.selenium.devtools.v105.runtime.Runtime.evaluate("return document.title"));

// Clean up
devTools.send(org.openqa.selenium.devtools.v105.network.Network.disable());
domains.javascript().disable();
driver.quit();

Architecture

Selenium DevTools v105 is built around several key components:

  • V105Domains: Main entry point providing access to high-level idealized interfaces
  • Domain Implementations: High-level wrappers (V105Network, V105Events, etc.) that provide Selenium-friendly APIs
  • Generated CDP Classes: Auto-generated classes from Chrome DevTools Protocol specifications for direct protocol access
  • Version Compatibility: Specifically designed for Chrome version 105 with exact CDP compatibility
  • Idealized Interfaces: Abstract interfaces that allow version-agnostic programming across different Chrome versions

Capabilities

Network Interception and Monitoring

Advanced network interception capabilities including request/response modification, authentication handling, and traffic monitoring. Essential for testing scenarios requiring network manipulation.

public class V105Network extends Network<AuthRequired, RequestPaused> {
    public V105Network(DevTools devTools);
    
    // Key network operations (inherited from Network base class)
    protected Command<Void> setUserAgentOverride(UserAgent userAgent);
    protected Command<Void> enableNetworkCaching();
    protected Command<Void> disableNetworkCaching();
}

Network Operations

Event Handling and Console Monitoring

Runtime event handling for console messages, JavaScript exceptions, and other browser events. Provides unified access to Chrome's runtime events with proper type conversion.

public class V105Events extends Events<ConsoleAPICalled, ExceptionThrown> {
    public V105Events(DevTools devtools);
    
    // Event subscription methods (inherited from Events base class)
    protected Event<ConsoleAPICalled> consoleEvent();
    protected Event<ExceptionThrown> exceptionThrownEvent();
    
    // Event conversion methods
    protected ConsoleEvent toConsoleEvent(ConsoleAPICalled event);
    protected JavascriptException toJsException(ExceptionThrown event);
}

Event Handling

JavaScript Execution and Bindings

JavaScript evaluation capabilities with support for bindings, script injection, and runtime interaction. Enables advanced JavaScript automation beyond standard WebDriver execute_script.

public class V105Javascript extends Javascript<ScriptIdentifier, BindingCalled> {
    public V105Javascript(DevTools devtools);
    
    // JavaScript operations (inherited from Javascript base class)
    public void disable();
    public ScriptId pin(String exposeScriptAs, String script);
    
    // Protected methods for binding management
    protected Command<Void> doAddJsBinding(String scriptName);
    protected Command<Void> doRemoveJsBinding(String scriptName);
    
    // Event handling
    protected Event<BindingCalled> bindingCalledEvent();
    protected String extractPayload(BindingCalled event);
}

JavaScript Operations

Browser Logging Access

Access to browser logs including console logs, network logs, and other browser-generated log messages. Provides structured access to Chrome's logging system.

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

Logging System

Target Management

Target management for handling browser tabs, web workers, iframes, and other browsing contexts. Essential for multi-context automation scenarios.

public class V105Target implements org.openqa.selenium.devtools.idealized.target.Target {
    public V105Target();
    
    public Command<List<org.openqa.selenium.devtools.idealized.target.model.TargetInfo>> getTargets();
    public Command<org.openqa.selenium.devtools.idealized.target.model.SessionID> attachToTarget(
        org.openqa.selenium.devtools.idealized.target.model.TargetID targetId);
    public Command<Void> detachFromTarget(
        Optional<org.openqa.selenium.devtools.idealized.target.model.SessionID> sessionId, 
        Optional<org.openqa.selenium.devtools.idealized.target.model.TargetID> targetId);
    public Command<Void> setAutoAttach();
    public Event<org.openqa.selenium.devtools.idealized.target.model.TargetID> detached();
}

Target Management

Direct CDP Domain Access

Direct access to all generated Chrome DevTools Protocol domains for advanced use cases requiring protocol-level control. Includes 41+ domains with full type-safe Java bindings.

// Runtime domain for JavaScript execution
import org.openqa.selenium.devtools.v105.runtime.Runtime;

// Network domain for network control  
import org.openqa.selenium.devtools.v105.network.Network;

// Page domain for page lifecycle
import org.openqa.selenium.devtools.v105.page.Page;

CDP Domains

Types

Core Domain Types

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

// CDP version info
public class V105CdpInfo extends CdpInfo {
    public V105CdpInfo();
}

Network Types

// User agent configuration
public static class UserAgent {
    String userAgent();
    String acceptLanguage(); 
    String platform();
}

// Authentication types
public class AuthRequired {
    AuthChallenge getAuthChallenge();
    RequestId getRequestId();
}

public class RequestPaused {
    RequestId getRequestId();
    Request getRequest();
    Optional<Integer> getResponseStatusCode();
}

Event Types

// Console event data
public class ConsoleEvent {
    String getType();
    Instant getTimestamp();
    List<Object> getMessages();
}

// JavaScript exception data  
public class JavascriptException extends RuntimeException {
    JavascriptException(String message);
    StackTraceElement[] getStackTrace();
}

JavaScript Types

// Script identifier for injected scripts
public class ScriptIdentifier {
    String toString();
}

// Binding call event data
public class BindingCalled {
    String getPayload();
    String getName();
}

Target Types

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

// Target and session identifiers
public class TargetID {
    TargetID(String id);
    String toString();
}

public class SessionID {
    SessionID(String id);
    String toString();
}

Log Types

// Log entry data
public class LogEntry {
    String getSource();
    Level getLevel();
    long getTimestamp();
    String getText();
}