WebDriver

The W3C WebDriver API is a platform and language-neutral interface and wire protocol allowing programs or scripts to control the behavior of a web browser.

WebDriver enables developers to create automated tests that simulate user interaction. This is different from JavaScript unit tests because WebDriver has access to functionality and information that JavaScript running in the browser doesn't, and it can more accurately simulate user events or OS-level events. WebDriver can also manage testing across multiple windows, tabs and webpages in a single test session.

Here's how to get started with WebDriver for Microsoft Edge.

The Microsoft Edge implementation of WebDriver supports both the W3C WebDriver specification and the JSON Wire Protocol for backwards compatibility with existing tests.

Getting started with WebDriver for Microsoft Edge

Note

You can find help, report issues, and file feature requests at Microsoft Edge Feedback & Support.

Using WebDriver

To get started using WebDriver with Microsoft Edge, check out these samples:

  • C# code sample for opening a browser window, navigating to bing.com and searching for 'webdriver' (GitHub Gist).

WebDriver server command line flags

List of command line flags for the WebDriver server.

Name Description Available Release
host Host IP to use for the WebDriver server (default: localhost) 14393
port Port to use for the WebDriver server (default: 17556) 14393
package ApplicationUserModelId (AUMID) for the application to be launched by the WebDriver server 14393
verbose Outputs requests received and responses sent by the WebDriver server 14393
silent Outputs nothing 15063
version Outputs the version of MicrosoftWebDriver.exe Insiders
w3c Use W3C WebDriver protocol (default option) Insiders
jwp Use JSON Wire protocol Insiders

W3C WebDriver

The support on a per command basis for the W3C WebDriver Specification.

Capabilities

Capability Key Status Available Release
Browser Name "browserName" Supported Insiders
Browser Version "browserVersion" Supported Insiders
Platform Name "platformName" Supported Insiders
Accept Insecure TLS Certificates "acceptInsecureCerts" Not Supported N/A
Page Load Strategy "pageLoadStrategy" Supported Insiders
Proxy Configuration "proxy" Not Supported N/A
Window Dimensioning/Positioning "setWindowRect" Supported Insiders
Session Timeouts Configuration "timeouts" Supported Insiders
Unhandled Prompt Behavior "unhandledPromptBehavior" Not Supported N/A
InPrivate "ms:inPrivate" N/A Insiders
Extension Paths "ms:extensionPaths" N/A Insiders
Start Page "ms:startPage" N/A Insiders

Locator Strategies

Locator Strategy Status Available Release
CSS Selectors Supported Insiders
Link Text Supported Insiders
Partial Link Text Supported Insiders
Tag Name Supported Insiders
XPath Supported Insiders

Commands

HTTP Method URI Template Command Status Available Release
POST /session New Session Supported Insiders
DELETE /session/{session id} Delete Session Supported Insiders
GET /status Status Supported Insiders
GET /session/{session id}/timeouts Get Timeouts Supported Insiders
POST /session/{session id}/timeouts Set Timeouts Supported Insiders
POST /session/{session id}/url Navigate To Supported Insiders
GET /session/{session id}/url Get Current URL Supported Insiders
POST /session/{session id}/back Back Supported Insiders
POST /session/{session id}/forward Forward Supported Insiders
POST /session/{session id}/refresh Refresh Supported Insiders
GET /session/{session id}/title Get Title Supported Insiders
GET /session/{session id}/window Get Window Handle Supported Insiders
DELETE /session/{session id}/window Close Window Supported Insiders
POST /session/{session id}/window Switch to Window Supported Insiders
GET /session/{session id}/window/handles Get Window Handles Supported Insiders
POST /session/{session id}/frame Switch To Frame Supported Insiders
POST /session/{session id}/frame/parent Switch to Parent Frame Supported Insiders
GET /session/{session id}/window/rect Get Window Rect Supported Insiders
POST /session/{session id}/window/rect Set Window Rect Supported Insiders
POST /session/{session id}/window/maximize Maximize Window Supported Insiders
POST /session/{session id}/window/minimize Minimize Window Not Supported N/A
POST /session/{session id}/window/fullscreen Fullscreen Window Not Supported N/A
GET /session/{session id}/element/active Get Active Element Supported Insiders
POST /session/{session id}/element Find Element Supported Insiders
POST /session/{session id}/elements Find Elements Supported Insiders
POST /session/{session id}/element/{element id}/element Find Element From Element Supported Insiders
POST /session/{session id}/element/{element id}/elements Find Elements From Element Supported Insiders
GET /session/{session id}/element/{element id}/selected Is Element Selected Supported Insiders
GET /session/{session id}/element/{element id}/attribute/{name} Get Element Attribute Supported Insiders
GET /session/{session id}/element/{element id}/property/{name} Get Element Property Supported Insiders
GET /session/{session id}/element/{element id}/css/{property name} Get Element CSS Value Supported Insiders
GET /session/{session id}/element/{element id}/text Get Element Text Supported Insiders
GET /session/{session id}/element/{element id}/name Get Element Tag Name Supported Insiders
GET /session/{session id}/element/{element id}/rect Get Element Rect Supported Insiders
GET /session/{session id}/element/{element id}/enabled Is Element Enabled Supported Insiders
POST /session/{session id}/element/{element id}/click Element Click Supported Insiders
POST /session/{session id}/element/{element id}/clear Element Clear Supported Insiders
POST /session/{session id}/element/{element id}/sendKeys Element Send Keys Supported Insiders
GET /session/{session id}/source Get Page Source Supported Insiders
POST /session/{session id}/execute/sync Execute Script Supported Insiders
POST /session/{session id}/execute/async Execute Async Script Supported Insiders
GET /session/{session id}/cookie Get All Cookies Supported Insiders
GET /session/{session id}/cookie/{name} Get Named Cookie Supported Insiders
POST /session/{session id}/cookie Add Cookie Supported Insiders
DELETE /session/{session id}/cookie/{name} Delete Cookie Supported Insiders
DELETE /session/{session id}/cookie Delete All Cookies Supported Insiders
POST /session/{session id}/actions Perform Actions Supported Insiders
DELETE /session/{session id}/actions Release Actions Supported Insiders
POST /session/{session id}/alert/dismiss Dismiss Alert Supported Insiders
POST /session/{session id}/alert/accept Accept Alert Supported Insiders
GET /session/{session id}/alert/text Get Alert Text Supported Insiders
POST /session/{session id}/alert/text Send Alert Text Supported Insiders
GET /session/{session id}/screenshot Take Screenshot Supported Insiders
GET /session/{session id}/screenshot/{element id} Take Element Screenshot Supported Insiders

JSON Wire Protocol

The support on a per command basis for the JSON Wire Protocol.

Commands

HTTP Method Path Status Available Release
GET /status Supported 10240
POST /session Supported 10240
GET /sessions Supported 10240
GET /session/:sessionId Supported 10240
DELETE /session/:sessionId Supported 10240
POST /session/:sessionId/timeouts Supported 10240
POST /session/:sessionId/timeouts/async_script Not Supported N/A
POST /session/:sessionId/timeouts/implicit_wait Supported 10586
GET /session/:sessionId/window_handle Supported 10586
GET /session/:sessionId/window_handles Supported 10586
GET /session/:sessionId/url Supported 10240
POST /session/:sessionId/url Supported 10240
POST /session/:sessionId/forward Supported 10240
POST /session/:sessionId/back Supported 10240
POST /session/:sessionId/refresh Supported 10240
POST /session/:sessionId/execute Supported 10240
POST /session/:sessionId/execute_async Supported 10586
GET /session/:sessionId/screenshot Supported 10240
GET /session/:sessionId/ime/available_engines Not Supported N/A
GET /session/:sessionId/ime/active_engine Not Supported N/A
GET /session/:sessionId/ime/activated Not Supported N/A
POST /session/:sessionId/ime/deactivate Not Supported N/A
POST /session/:sessionId/ime/activate Not Supported N/A
POST /session/:sessionId/frame Supported 10586
POST /session/:sessionId/frame/parent Supported 10586
POST /session/:sessionId/window Supported 10586
DELETE /session/:sessionId/window Supported 10586
POST /session/:sessionId/window/:windowHandle/size Supported 10586
GET /session/:sessionId/window/:windowHandle/size Supported 10586
POST /session/:sessionId/window/:windowHandle/position Supported 10586
GET /session/:sessionId/window/:windowHandle/position Supported 10586
GET /session/:sessionId/window/:windowHandle/maximize Supported 10586
GET /session/:sessionId/cookie Supported 10586
POST /session/:sessionId/cookie Supported 10240
DELETE /session/:sessionId/cookie Supported 10586
DELETE /session/:sessionId/cookie/:name Supported 10240
GET /session/:sessionId/source Supported 10586
GET /session/:sessionId}/title Supported 10240
POST /session/:sessionId/element Supported 10586
POST /session/:sessionId/elements Supported 10586
POST /session/:sessionId/element/active Supported 10586
GET /session/:sessionId/element/:id Not Supported N/A
POST /session/:sessionId/element/:id/element Supported 10586
POST /session/:sessionId/element/:id/elements Supported 10586
POST /session/:sessionId/element/:id/click Supported 10240
POST /session/:sessionId/element/:id/submit Supported 10586
GET /session/:sessionId/element/:id/text Supported 10240
POST /session/:sessionId/element/:id/value Supported 10240
POST /session/:sessionId/keys Supported 10586
GET /session/:sessionId/element/:id/name Supported 10240
POST /session/:sessionId/element/:id/clear Supported 10240
GET /session/:sessionId/element/:id/selected Supported 10240
GET /session/:sessionId/element/:id/enabled Supported 10240
GET /session/:sessionId/element/:id/attribute/:name Supported 10240
GET /session/:sessionId/element/:id/equals/:other Supported 10586
GET /session/:sessionId/element/:id/displayed Supported 10240
GET /session/:sessionId/element/:id/location Supported 10586
GET /session/:sessionId/element/:id/location_in_view Supported 10586
GET /session/:sessionId/element/:id/size Supported 10586
GET /session/:sessionId/element/:id/css/:propertyName Supported 10240
GET /session/:sessionId/orientation Not Supported N/A
POST /session/:sessionId/orientation Not Supported N/A
GET /session/:sessionId/alert_text Supported 10240
POST /session/:sessionId/alert_text Supported 10586
POST /session/:sessionId/accept_alert Supported 10240
POST /session/:sessionId/dismiss_alert Supported 10240
POST /session/:sessionId/moveto Supported 10586
POST /session/:sessionId/click Supported 10240
POST /session/:sessionId/buttondown Supported 10586
POST /session/:sessionId/buttonup Supported 10586
POST /session/:sessionId/doubleclick Supported 10586
POST /session/:sessionId/touch/click Not Supported N/A
POST /session/:sessionId/touch/down Not Supported N/A
POST /session/:sessionId/touch/up Not Supported N/A
POST /session/:sessionId/touch/move Not Supported N/A
POST /session/:sessionId/touch/scroll Not Supported N/A
POST /session/:sessionId/touch/scroll Not Supported N/A
POST /session/:sessionId/touch/doubleclick Not Supported N/A
POST /session/:sessionId/touch/longclick Not Supported N/A
POST /session/:sessionId/touch/flick Not Supported N/A
POST /session/:sessionId/touch/flick Not Supported N/A
GET /session/:sessionId/location Supported 10586
POST /session/:sessionId/location Supported 10586
GET /session/:sessionId/local_storage Supported 10586
POST /session/:sessionId/local_storage Supported 10586
DELETE /session/:sessionId/local_storage Supported 10586
GET /session/:sessionId/local_storage/key/:key Supported 10586
DELETE /session/:sessionId/local_storage/key/:key Supported 10586
GET /session/:sessionId/local_storage/size Supported 10586
GET /session/:sessionId/session_storage Supported 10586
POST /session/:sessionId/session_storage Supported 10586
DELETE /session/:sessionId/session_storage Supported 10586
GET /session/:sessionId/session_storage/key/:key Supported 10586
DELETE /session/:sessionId/session_storage/key/:key Supported 10586
GET /session/:sessionId/session_storage/size Supported 10586
GET /session/:sessionId/log Not Supported N/A
GET /session/:sessionId/log/types Not Supported N/A
GET /session/:sessionId/application_cache/status Supported 10586