Selenium is a native D implementation of the W3C WebDriver protocol. It drives Chrome, Firefox, Edge, and Safari directly over HTTP, with no external language bindings or C wrappers. The API often mirrors the Selenium Ruby bindings, so anyone who has used Selenium before will find it familiar.
A Driver is a handle to one session, and a Bridge is the connection that owns the WebDriver process. Unlike most clients, a bridge can host several sessions at once, and each driver is a handle to one of them.
| Package | Contents |
|---|---|
selenium:webdriver |
Bridge, driver, browser capabilities, elements, roots, cookies, logging. |
selenium:grid |
Hub, node, slot and session models, HTTP routing. |
Add either or both with DUB:
dub add selenium:webdriver
dub add selenium:gridBoth subpackages are included when you depend on the root selenium package.
| Browser | WebDriver binary |
|---|---|
| Chrome | chromedriver |
| Firefox | geckodriver |
| Edge | msedgedriver |
| Safari | safaridriver |
The library auto-detects the right driver for the browser you request, or picks the first one on PATH when you do not specify.
- WebDriver — Getting started, bridge, driver, elements.
- Grid — Getting started with hub and node.
- Testing — Offline and integration test workflow.
- Contributing — How to report issues and submit changes.
Contributions are welcome. Please read CONTRIBUTING.md for guidelines, and note that any new feature or bug fix is expected to ship with tests as described in TESTING.md.
Selenium is licensed under Apache-2.0.