coderef

WebDriverLimited availability

The WebDriver protocol allows out-of-process programs to inspect and control browsers to, for example, run tests of web applications. Also known as WebDriver classic.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
✕Not supportedup to 155
Current: 155
Edge
✕Not supportedup to 154
Current: 154
Firefox
1–65Not supported
66+Supportedsince Mar 19, 2019
Current: 157
Safari
✕Not supportedup to 27
Current: 27
MobileChrome Android
✕Not supportedup to 155
Current: 155
Firefox Android
✕Not supportedup to 157
Current: 157
Safari iOS
✕Not supportedup to 27
Current: 27

How to use

Not supported in Chrome, Edge, Safari, Chrome Android, Firefox Android, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

Full syntax and examples are on MDN: webdriver.

Feature detection

JS · check before using
if ("Navigator" in globalThis && "webdriver" in Navigator.prototype) {
  // Navigator.webdriver is available
}

Sub-features

Support for each part of the feature (56). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Navigator.webdriver63126010.1636010.3
webdriver.classic.AcceptAlert657955✕✕✕✕
webdriver.classic.AddCookie657955✕✕✕✕
webdriver.classic.Back657955✕✕✕✕
webdriver.classic.CloseWindow657955✕✕✕✕
webdriver.classic.DeleteAllCookies657955✕✕✕✕
webdriver.classic.DeleteCookie657955✕✕✕✕
webdriver.classic.DeleteSession657955✕✕✕✕
webdriver.classic.DismissAlert657955✕✕✕✕
webdriver.classic.ElementClear657955✕✕✕✕
webdriver.classic.ElementClick657955✕✕✕✕
webdriver.classic.ElementSendKeys657955✕✕✕✕
webdriver.classic.ExecuteAsyncScript657955✕✕✕✕
webdriver.classic.ExecuteScript657955✕✕✕✕
webdriver.classic.FindElement657955✕✕✕✕
webdriver.classic.FindElementFromElement657955✕✕✕✕
webdriver.classic.FindElements657955✕✕✕✕
webdriver.classic.FindElementsFromElement657955✕✕✕✕
webdriver.classic.Forward657955✕✕✕✕
webdriver.classic.FullscreenWindow657955✕✕✕✕
Show 36 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
webdriver.classic.GetActiveElement657955✕✕✕✕
webdriver.classic.GetAlertText657955✕✕✕✕
webdriver.classic.GetAllCookies657955✕✕✕✕
webdriver.classic.GetCurrentURL657955✕✕✕✕
webdriver.classic.GetElementAttribute657955✕✕✕✕
webdriver.classic.GetElementCSSValue657955✕✕✕✕
webdriver.classic.GetElementProperty657955✕✕✕✕
webdriver.classic.GetElementRect657955✕✕✕✕
webdriver.classic.GetElementTagName657955✕✕✕✕
webdriver.classic.GetElementText657955✕✕✕✕
webdriver.classic.GetNamedCookie657955✕✕✕✕
webdriver.classic.GetPageSource657955✕✕✕✕
webdriver.classic.GetTimeouts657955✕✕✕✕
webdriver.classic.GetTitle657955✕✕✕✕
webdriver.classic.GetWindowHandle657955✕✕✕✕
webdriver.classic.GetWindowHandles657955✕✕✕✕
webdriver.classic.GetWindowRect657955✕✕✕✕
webdriver.classic.IsElementEnabled657955✕✕✕✕
webdriver.classic.IsElementSelected657955✕✕✕✕
webdriver.classic.MaximizeWindow657955✕✕✕✕
webdriver.classic.MinimizeWindow657955✕✕✕✕
webdriver.classic.NavigateTo657955✕✕✕✕
webdriver.classic.NewSession657955✕✕✕✕
webdriver.classic.NewWindow✕✕66✕✕66✕
webdriver.classic.PerformActions✕✕55✕✕✕✕
webdriver.classic.Refresh657955✕✕✕✕
webdriver.classic.ReleaseActions✕✕55✕✕✕✕
webdriver.classic.SendAlertText657955✕✕✕✕
webdriver.classic.SetTimeouts657955✕✕✕✕
webdriver.classic.SetWindowRect657955✕✕✕✕
webdriver.classic.Status657955✕✕✕✕
webdriver.classic.SwitchToFrame657955✕✕✕✕
webdriver.classic.SwitchToParentFrame657955✕✕✕✕
webdriver.classic.SwitchToWindow657955✕✕✕✕
webdriver.classic.TakeElementScreenshot657955✕✕✕✕
webdriver.classic.TakeScreenshot657955✕✕✕✕