Microsoft Edge WebDriver implementation for Selenium WebDriver browser automation with EdgeOptions configuration and EdgeDriverService management.
—
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.
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);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;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"));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 staleError 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();
}
}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");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