#browser #w3c #protocols #automation #remote-control


Library implementing the wire protocol for the W3C WebDriver specification

67 releases (breaking)

0.50.0 Jan 3, 2024
0.49.0 Sep 20, 2023
0.48.0 Apr 3, 2023
0.47.1 Feb 2, 2023
0.2.2 Jul 22, 2015

#86 in HTTP server

Download history 7717/week @ 2024-01-28 7156/week @ 2024-02-04 9603/week @ 2024-02-11 10298/week @ 2024-02-18 12239/week @ 2024-02-25 12382/week @ 2024-03-03 11718/week @ 2024-03-10 10966/week @ 2024-03-17 8834/week @ 2024-03-24 8597/week @ 2024-03-31 7093/week @ 2024-04-07 7635/week @ 2024-04-14 24006/week @ 2024-04-21 28724/week @ 2024-04-28 25006/week @ 2024-05-05 28482/week @ 2024-05-12

106,672 downloads per month
Used in 48 crates (7 directly)

MPL-2.0 license

5.5K SLoC

webdriver library

The webdriver crate is a library implementation of the wire protocol for the W3C WebDriver standard written in Rust. WebDriver is a remote control interface that enables introspection and control of user agents. It provides a platform- and language-neutral wire protocol as a way for out-of-process programs to remotely instruct the behaviour of web browsers.

The webdriver library provides the formal types, error codes, type and bounds checks, and JSON marshaling conventions for correctly parsing and emitting the WebDriver protocol. It also provides an HTTP server where endpoints are mapped to the different WebDriver commands.

As of right now, this is an implementation for the server side of the WebDriver API in Rust, not the client side.


The library is built using the usual Rust conventions:

% cargo build

To run the tests:

% cargo test


The mailing list for webdriver discussion is https://groups.google.com/a/mozilla.org/g/dev-webdriver.

There is also an Element channel to talk about using and developing webdriver on #webdriver:mozilla.org <https://chat.mozilla.org/#/room/#webdriver:mozilla.org>__


~210K SLoC