or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

events.mdindex.mdjavascript.mdlogging.mdnetwork.mdtargets.md
tile.json

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

Chrome DevTools Protocol version 99 support library for Selenium WebDriver Java bindings

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

To install, run

npx @tessl/cli install tessl/maven-org-seleniumhq-selenium--selenium-devtools-v99@4.1.0

index.mddocs/

Selenium DevTools v99

Selenium DevTools v99 provides comprehensive Chrome DevTools Protocol (CDP) version 99 support for Selenium WebDriver Java bindings. It enables low-level browser automation, debugging, and monitoring capabilities through direct access to Chrome's native debugging protocol.

Package Information

  • Package Name: selenium-devtools-v99
  • Package Type: Maven
  • Language: Java
  • Installation: org.seleniumhq.selenium:selenium-devtools-v99:4.1.4

Core Imports

import org.openqa.selenium.devtools.v99.V99CdpInfo;
import org.openqa.selenium.devtools.v99.V99Domains;
import org.openqa.selenium.devtools.DevTools;

For direct protocol access:

import org.openqa.selenium.devtools.v99.runtime.Runtime;
import org.openqa.selenium.devtools.v99.network.Network;
import org.openqa.selenium.devtools.v99.page.Page;
import org.openqa.selenium.devtools.v99.log.Log;
import org.openqa.selenium.devtools.v99.target.Target;
import org.openqa.selenium.devtools.v99.fetch.Fetch;
import java.util.function.Consumer;

Basic Usage

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v99.V99Domains;

// Create WebDriver and access DevTools
WebDriver driver = new ChromeDriver();
DevTools devTools = ((ChromeDriver) driver).getDevTools();
devTools.createSession();

// Access v99 domains
V99Domains domains = new V99Domains(devTools);

// Enable network monitoring using public API
domains.network().setUserAgent("Custom User Agent for Testing");

// Listen for console events using public API
domains.events().addConsoleListener(consoleEvent -> {
    System.out.println("Console: " + consoleEvent.getType() + " - " + consoleEvent.getMessages());
});

// Set up JavaScript binding using public API
domains.javascript().addJsBinding("myCallback");
domains.javascript().addBindingCalledListener(payload -> {
    System.out.println("JavaScript binding called: " + payload);
});

Architecture

Selenium DevTools v99 is built around several key architectural components:

  • CDP Version Support: Specifically targets Chrome DevTools Protocol version 99
  • Domain-Based Organization: Each CDP domain (Network, Runtime, Page, etc.) has dedicated classes
  • Command Pattern: All operations use CDP commands sent through DevTools client
  • Event-Driven Model: Browser events are handled through listener registration
  • Generated Protocol Classes: Most protocol classes are generated from CDP specifications
  • Type Safety: Strongly-typed Java interfaces for all CDP operations

The library provides two access levels:

  • High-level wrapper classes (V99*) for common operations with simplified APIs
  • Generated protocol classes for direct CDP access with full protocol fidelity

Capabilities

JavaScript Operations

JavaScript execution, debugging, and browser-side binding management for advanced automation scenarios.

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

JavaScript Operations

Network Management

Network traffic monitoring, request interception, authentication handling, and response manipulation for comprehensive network control.

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

Network Management

Event Handling

Browser event monitoring including console messages, JavaScript exceptions, and runtime events for debugging and monitoring.

public class V99Events extends Events<ConsoleAPICalled, ExceptionThrown> {
    public V99Events(DevTools devtools);
    
    // High-level public methods
    public void addConsoleListener(Consumer<ConsoleEvent> listener);
    public void addJavascriptExceptionListener(Consumer<JavascriptException> listener);
    public void disable();
}

Event Handling

Log Management

Browser console and log event collection with level filtering and timestamp handling for comprehensive logging support.

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

Log Management

Target Management

Browser target (tab/window/iframe) management including attachment, detachment, and target enumeration for multi-context automation.

public class V99Target implements org.openqa.selenium.devtools.idealized.target.Target {
    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

Core Types

Domain Access

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

CDP Information

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

Common Protocol Types

// Session and target identifiers
public class SessionID {
    public SessionID(String id);
    public String toString();
}

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

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

// Authentication credentials
public class UsernameAndPassword {
    public String username();
    public String password();
}

Error Handling

The library integrates with Selenium's standard exception hierarchy:

  • DevToolsException: Thrown for CDP communication errors
  • JavascriptException: Thrown for JavaScript execution errors with stack traces
  • WebDriverException: Base exception for WebDriver-related errors

Exception handling follows standard Java patterns with specific exceptions for different error conditions. Most operations are synchronous and throw exceptions immediately, while event handlers receive error information through event data structures.