or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

entry-point.mdevents.mdindex.mdjavascript.mdlogging.mdnetwork.mdtarget.md
tile.json

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

Java bindings for Chrome DevTools Protocol version 101, enabling browser automation and debugging capabilities through CDP integration

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

To install, run

npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-devtools-v101@4.3.0

index.mddocs/

Selenium DevTools v101

Selenium DevTools v101 provides Java language bindings for Chrome DevTools Protocol (CDP) version 101, enabling developers to interact with Chrome browser's debugging and automation APIs through Selenium WebDriver. This library offers comprehensive access to browser development tools including network monitoring, performance profiling, runtime evaluation, and advanced debugging capabilities.

Package Information

  • Package Name: selenium-devtools-v101
  • Package Type: maven
  • Language: Java
  • Group ID: org.seleniumhq.selenium
  • Artifact ID: selenium-devtools-v101
  • Version: 4.3.0
  • Installation: Add to Maven dependencies:
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-devtools-v101</artifactId>
    <version>4.3.0</version>
</dependency>

Core Imports

import org.openqa.selenium.devtools.v101.V101CdpInfo;
import org.openqa.selenium.devtools.v101.V101Domains;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.idealized.Domains;

Basic Usage

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v101.V101CdpInfo;
import org.openqa.selenium.devtools.idealized.Domains;

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

// Get CDP v101 implementation
V101CdpInfo cdpInfo = new V101CdpInfo();
Domains domains = cdpInfo.getDomains(devTools);

// Listen to console events
domains.events().addConsoleListener(event -> {
    System.out.println("Console " + event.getType() + ": " + event.getMessages());
});

// Set up network interception
domains.network().interceptTrafficWith(request -> {
    // Modify or monitor network requests
    return next -> next.execute(request);
});

// Add JavaScript bindings
domains.javascript().addJsBinding("myCustomFunction");
domains.javascript().addBindingCalledListener(payload -> {
    System.out.println("JS binding called with: " + payload);
});

Architecture

Selenium DevTools v101 is built around several key components:

  • V101CdpInfo: Entry point providing version-specific CDP implementation
  • Domain System: Organized access to CDP functionality through specialized domains
  • Event System: Asynchronous event handling for browser notifications
  • Command Pattern: Type-safe CDP command execution with structured responses
  • Generated Bindings: Auto-generated CDP protocol classes from Chrome's specifications

Capabilities

Entry Point and Domain Management

Main entry point for accessing Chrome DevTools Protocol version 101 functionality and managing domain access.

public class V101CdpInfo extends CdpInfo {
    public V101CdpInfo();
    public int getMajorVersion(); // Returns 101
    public Domains getDomains(DevTools devTools);
}

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

Entry Point and Domain Management

Console Events and JavaScript Exceptions

Real-time monitoring of browser console output and JavaScript runtime exceptions for debugging and monitoring purposes.

public class V101Events extends Events<ConsoleAPICalled, ExceptionThrown> {
    public V101Events(DevTools devtools);
    public void addConsoleListener(Consumer<ConsoleEvent> listener);
    public void addJavascriptExceptionListener(Consumer<JavascriptException> listener);
    public void disable();
}

Console Events and JavaScript Exceptions

JavaScript Bindings and Script Evaluation

JavaScript execution control including custom bindings between browser JavaScript and Java code, and script injection capabilities.

public class V101Javascript extends Javascript<ScriptIdentifier, BindingCalled> {
    public V101Javascript(DevTools devtools);
    public ScriptId pin(String exposeScriptAs, String script);
    public void addBindingCalledListener(Consumer<String> listener);
    public void addJsBinding(String scriptName);
    public void removeJsBinding(String scriptName);
    public void disable();
}

JavaScript Bindings and Script Evaluation

Network Interception and Authentication

Comprehensive network traffic control including request/response interception, authentication handling, and user agent manipulation.

public class V101Network extends Network<AuthRequired, RequestPaused> {
    public V101Network(DevTools devTools);
    public void setUserAgent(String userAgent);
    public void setUserAgent(UserAgent userAgent);
    public void addAuthHandler(Predicate<URI> whenThisMatches, Supplier<Credentials> useTheseCredentials);
    public void interceptTrafficWith(Filter filter);
    public void prepareToInterceptTraffic();
    public void resetNetworkFilter();
    public void disable();
}

Network Interception and Authentication

Target Management

Browser target and session management for handling multiple tabs, windows, and browser contexts in complex automation scenarios.

public class V101Target implements Target {
    public V101Target();
    public Command<Void> detachFromTarget(Optional<SessionID> sessionId, Optional<TargetID> targetId);
    public Command<List<TargetInfo>> getTargets();
    public Command<SessionID> attachToTarget(TargetID targetId);
    public Command<Void> setAutoAttach();
    public Event<TargetID> detached();
}

Target Management

Browser Logging

Browser-level logging functionality for capturing and managing browser console logs, network logs, and other browser-generated log messages.

public class V101Log implements Log {
    public V101Log();
    public Command<Void> enable();
    public Command<Void> clear();
    public Event<LogEntry> entryAdded();
}

Browser Logging

Core Framework Types

// Main DevTools communication interface
public interface DevTools {
    Domains getDomains();
    <X> X send(Command<X> command);
    <X> void addListener(Event<X> event, Consumer<X> handler);
    void clearListeners();
    void createSession();
    void createSessionIfThereIsNotOne();
    void disconnectSession();
    void close();
}

// CDP command representation
public class Command<X> {
    public String getMethod();
    public Map<String, Object> getParams();
    public boolean getSendsResponse();
    public Command<X> doesNotSendResponse();
}

// CDP event representation  
public class Event<X> {
    public String getMethod();
}

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

// JavaScript exception wrapper
public class JavascriptException extends RuntimeException {
    public JavascriptException(String message);
}

// Script identifier wrapper
public class ScriptId {
    public Object getActualId();
}

Network Types

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

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

// Intercepted request data
public class RequestPaused {
    public RequestId getRequestId();
    public Request getRequest();
    public Optional<Integer> getResponseStatusCode();
    public Optional<String> getResponseErrorReason();
    public Optional<List<HeaderEntry>> getResponseHeaders();
}

// HTTP header entry
public class HeaderEntry {
    public HeaderEntry(String name, String value);
    public String getName();
    public String getValue();
}

Target Types

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

// ID wrapper types
public class TargetID {
    public TargetID(String id);
    public String toString();
}

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

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

Log Types

// Browser log entry
public class LogEntry {
    public String getSource();
    public LogEntry getLogEntry(); // Returns java.util.logging.LogEntry
}