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: 155Edge
✕Not supportedup to 154
Current: 154Firefox
1–65Not supported
66+Supportedsince Mar 19, 2019
Current: 157Safari
✕Not supportedup to 27
Current: 27MobileChrome Android
✕Not supportedup to 155
Current: 155Firefox Android
✕Not supportedup to 157
Current: 157Safari iOS
✕Not supportedup to 27
Current: 27How 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
}Documentation (MDN)
Specification
Sub-features
Support for each part of the feature (56). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Navigator.webdriver | 63 | 12 | 60 | 10.1 | 63 | 60 | 10.3 |
| webdriver.classic.AcceptAlert | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.AddCookie | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.Back | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.CloseWindow | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.DeleteAllCookies | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.DeleteCookie | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.DeleteSession | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.DismissAlert | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ElementClear | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ElementClick | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ElementSendKeys | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ExecuteAsyncScript | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ExecuteScript | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.FindElement | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.FindElementFromElement | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.FindElements | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.FindElementsFromElement | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.Forward | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.FullscreenWindow | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
Show 36 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| webdriver.classic.GetActiveElement | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetAlertText | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetAllCookies | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetCurrentURL | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementAttribute | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementCSSValue | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementProperty | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementRect | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementTagName | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetElementText | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetNamedCookie | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetPageSource | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetTimeouts | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetTitle | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetWindowHandle | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetWindowHandles | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.GetWindowRect | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.IsElementEnabled | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.IsElementSelected | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.MaximizeWindow | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.MinimizeWindow | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.NavigateTo | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.NewSession | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.NewWindow | ✕ | ✕ | 66 | ✕ | ✕ | 66 | ✕ |
| webdriver.classic.PerformActions | ✕ | ✕ | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.Refresh | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.ReleaseActions | ✕ | ✕ | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SendAlertText | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SetTimeouts | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SetWindowRect | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.Status | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SwitchToFrame | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SwitchToParentFrame | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.SwitchToWindow | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.TakeElementScreenshot | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |
| webdriver.classic.TakeScreenshot | 65 | 79 | 55 | ✕ | ✕ | ✕ | ✕ |