Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


An alternate webdriver implementation based on Scala, Akka and Spray

Subscribe to updates I use webdriver

Statistics on webdriver

Number of watchers on Github 54
Number of open issues 4
Main language Scala
Average time to merge a PR about 1 month
Open pull requests 3+
Closed pull requests 0+
Last commit about 4 years ago
Repo Created almost 6 years ago
Repo Last Updated over 1 year ago
Size 644 KB
Organization / Authortypesafehub
Page Updated
Do you use webdriver? Leave a review!
View open issues (4)
View webdriver activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating webdriver for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Build Status

WebDriver is a wire based protocol drafted by the W3C in order to provide browsers with scripting capability. WebDriver-enabled browsers include Chrome, Firefox, Safari, Internet Explorer and PhantomJs. These browsers can be requested to execute JavaScript, load urls, enquire upon doms and more.

This project provides an alternate WebDriver implementation based on Scala, Akka and Spray. The primary benefit of the approach taken here as opposed to many of the existing WebDriver APIs is its reactive nature i.e. the API is non-blocking and event driven, providing a resilient implementation by leveraging Akka in particular. One consequence of the API design is that many WebDriver requests can be executed in parallel e.g. several JavaScript programs can be run simultaneously.

In addition to the reactive network client, support for HtmlUnit is provided. HtmlUnit provides a browser environment to Mozilla's Rhino and executes entirely within the JVM. The consequence of this is that no other browser is required to be installed. The cost is one of performance given that Rhino is not faster than a native browser. That said, HtmlUnit is invoked across multiple threads and so performance may be adequate for many use-cases.

Sample usage can be obtained by inspecting the webdriver-tester sub-project. There's a main class that illustrates essential interactions. Here is a snippet of it:

val browser = system.actorOf(PhantomJs.props(), "localBrowser")
browser ! LocalBrowser.Startup
for (
  session <- (browser ? LocalBrowser.CreateSession).mapTo[ActorRef];
  result <- (session ? Session.ExecuteJs("return arguments[0]", JsArray(JsNumber(999)))).mapTo[JsNumber]
) yield {

The above illustrates how a browser can be launched, a session established and then some arbitrary JavaScript sent to it through the session.

© Typesafe Inc., 2013, 2014

webdriver open issues Ask a question     (View All Issues)
  • over 4 years LocalBrowser should "monitor" the underlying process
webdriver open pull requests (View All Pulls)
  • Travis migration
  • Fix #12 : monitor native process
  • Upgrade spray-client dependency
webdriver questions on Stackoverflow (View All Questions)
  • Selenium Grid multiprocessing using Remote Webdriver is giving different behavior on Linux vs Windows
  • How to handle the javascript alert using webdriver with IEDriver
  • Complete code for picking date in selenium webdriver
  • Picking particular date from calender using selenium webdriver java
  • Selenium WebDriver get text from input field
  • Selenium WebDriver if else statement
  • Selenium Webdriver, click a button with class
  • How can i handle multiple choice options in multiselect typeahead select box using java in Selenium Webdriver
  • Please provide webdriver code to test bootstrap alerts
  • unable to Pass hyphen or - character using Selenium webDriver
  • How to take multiple ScreenShot in Selenium WebDriver by using Java?
  • Selenium Webdriver with firefox driver not starting from batch command file on windows with error
  • Selenium webdriver Java code using web driver for double click a record in a grid
  • How to loop through table to find a string match in column 1, then select a dropdown on the same row in another column using Selenium WebDriver Java?
  • Execute Javascript file in C# through WebDriver
  • Watir-webdriver gem in cloud9ide
  • Python - Selenium WebDriver - Checking element exists
  • selenium webdriver SendKeys is not working
  • How to wait until an element is not changing in Selenium Webdriver?
  • unable to connect to chromedriver (Selenium::WebDriver::Error::WebDriverError)
  • Ruby on Rails cannot load such file -- selenium-webdriver Error
  • What is the best approach for Timeout using Selenium using Webdriver
  • How to use waits in selenium webdriver
  • How to refer second classname if two classes have same classname - using selenium webdriver
  • How to handle login pop up window using Selenium WebDriver?
  • How to work with Canvas GoJS in selenium webdriver
  • Selenium WebDriver not loading page after Firefox update
  • Ruby Selenium Webdriver + Page object model + Practice Website?
  • How to run webdriver then protractor through a batch file?
  • Selenium Webdriver bootstrap select2 dropdown access
webdriver list of languages used
Other projects in Scala