CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-seleniumhq-selenium--selenium-edge-driver

Microsoft Edge WebDriver implementation for Selenium WebDriver browser automation with EdgeOptions configuration and EdgeDriverService management.

Pending
Overview
Eval results
Files

edge-driver.mddocs/

Edge Driver

EdgeDriver is the main WebDriver implementation for Microsoft Edge browser automation. It extends ChromiumDriver and provides all standard WebDriver functionality plus Edge-specific features like WebView2 support and Chrome DevTools Protocol integration.

Capabilities

EdgeDriver Class

Main WebDriver implementation for controlling Microsoft Edge browser instances.

/**
 * A WebDriver implementation that controls an Edge browser running on the local machine.
 * Requires an edgedriver executable to be available in PATH.
 */
public class EdgeDriver extends ChromiumDriver {
    /**
     * Creates EdgeDriver with default EdgeOptions
     */
    public EdgeDriver();
    
    /**
     * Creates EdgeDriver with specified options
     * @param options EdgeOptions for browser configuration
     */
    public EdgeDriver(EdgeOptions options);
    
    /**
     * Creates EdgeDriver with specified service and default options
     * @param service EdgeDriverService for executable management
     */
    public EdgeDriver(EdgeDriverService service);
    
    /**
     * Creates EdgeDriver with service and options
     * @param service EdgeDriverService for executable management
     * @param options EdgeOptions for browser configuration
     */
    public EdgeDriver(EdgeDriverService service, EdgeOptions options);
    
    /**
     * Creates EdgeDriver with service, options, and client configuration
     * @param service EdgeDriverService for executable management
     * @param options EdgeOptions for browser configuration
     * @param clientConfig ClientConfig for HTTP client settings
     */
    public EdgeDriver(EdgeDriverService service, EdgeOptions options, ClientConfig clientConfig);
    
    /**
     * Creates RemoteWebDriverBuilder for Edge
     * @return RemoteWebDriverBuilder configured for Edge
     */
    @Beta
    public static RemoteWebDriverBuilder builder();
}

Usage Examples:

import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.edge.EdgeDriverService;

// Default configuration
EdgeDriver driver = new EdgeDriver();

// With custom options
EdgeOptions options = new EdgeOptions();
options.addArguments("--headless");
options.setBinary("/path/to/edge");
EdgeDriver driver = new EdgeDriver(options);

// With custom service
EdgeDriverService service = new EdgeDriverService.Builder()
    .usingPort(9515)
    .withVerbose(true)
    .build();
EdgeDriver driver = new EdgeDriver(service);

// Full configuration
EdgeDriverService service = EdgeDriverService.createDefaultService();
EdgeOptions options = new EdgeOptions();
options.addArguments("--disable-extensions");
ClientConfig clientConfig = ClientConfig.defaultConfig();
EdgeDriver driver = new EdgeDriver(service, options, clientConfig);

WebDriver API Methods

EdgeDriver inherits all standard WebDriver methods through ChromiumDriver:

// Navigation
void get(String url);
String getCurrentUrl();
String getTitle();
String getPageSource();
void close();
void quit();

// Element finding
WebElement findElement(By by);
List<WebElement> findElements(By by);

// Window management
String getWindowHandle();
Set<String> getWindowHandles();
WebDriver.TargetLocator switchTo();
WebDriver.Navigation navigate();
WebDriver.Options manage();

// JavaScript execution
Object executeScript(String script, Object... args);
Object executeAsyncScript(String script, Object... args);

// Screenshots
<X> X getScreenshotAs(OutputType<X> target) throws WebDriverException;

Chrome DevTools Protocol Support

EdgeDriver provides CDP support through inherited HasCasting and HasCdp interfaces:

// CDP execution
Map<String, Object> executeCdpCommand(String commandName, Map<String, Object> parameters);

// Network domain
void createNetworkConditions(String name, boolean offline, long latency, long downloadThroughput, long uploadThroughput);

// Performance domain
List<Object> getPerformanceLogs();

// Casting capabilities (inherited from HasCasting)
List<Map<String, String>> getCastTargets();
void startTabMirroring(String deviceName);
void stopCasting(String deviceName);
String getCastIssueMessage();

CDP Usage Examples:

import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.DevTools;

EdgeDriver driver = new EdgeDriver();

// Enable network tracking
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

// Listen to network events
devTools.addListener(Network.responseReceived(), response -> {
    System.out.println("Response: " + response.getResponse().getUrl());
});

// Execute CDP commands directly
Map<String, Object> result = driver.executeCdpCommand("Runtime.evaluate", 
    Map.of("expression", "window.location.href"));

Error Handling

EdgeDriver throws standard WebDriver exceptions:

// Common exceptions
WebDriverException - General WebDriver errors
SessionNotCreatedException - When driver session cannot be created
NoSuchElementException - When element is not found
TimeoutException - When operations timeout
ElementNotInteractableException - When element cannot be interacted with
StaleElementReferenceException - When element reference is stale

Error Handling Examples:

try {
    EdgeDriver driver = new EdgeDriver();
    driver.get("https://example.com");
    
    WebElement element = driver.findElement(By.id("missing-element"));
} catch (SessionNotCreatedException e) {
    System.err.println("Cannot create Edge session: " + e.getMessage());
} catch (NoSuchElementException e) {
    System.err.println("Element not found: " + e.getMessage());
} catch (WebDriverException e) {
    System.err.println("WebDriver error: " + e.getMessage());
} finally {
    if (driver != null) {
        driver.quit();
    }
}

WebView2 Support

EdgeDriver supports WebView2 automation when configured with appropriate options:

EdgeOptions options = new EdgeOptions();
options.useWebView(true);
EdgeDriver driver = new EdgeDriver(options);

// WebView2 applications can now be automated
driver.get("webview2://app-content");

Types

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chromium.ChromiumDriver;
import org.openqa.selenium.remote.RemoteWebDriverBuilder;
import org.openqa.selenium.remote.http.ClientConfig;
import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.HasCasting;

Install with Tessl CLI

npx tessl i tessl/maven-org-seleniumhq-selenium--selenium-edge-driver

docs

edge-driver-info.md

edge-driver-service.md

edge-driver.md

edge-options.md

index.md

tile.json