This is a Clojure library for driving a web browser using Selenium-WebDriver as the backend. For more comprehensive documentation on all of clj-webdriver's features, read the Github wiki. You can generate documentation locally with lein doc
(API docs) or lein marg
(annotated source).
Release Type | Date | Leiningen/Maven |
---|---|---|
Stable | Feb 15 2012 | [clj-webdriver "0.5.1"] |
Pre-Release | October 8 2012 | [clj-webdriver "0.6.0-beta1"] |
NOTE TO LEININGEN 2 USERS: At least as of Leiningen 2 preview 6, the default behavior for retrieving dependencies that fail a checksum test is not to download them. This affect's at least one of Selenium-WebDriver's transitive dependencies, which means you can't download clj-webdriver's dependencies with default Leiningen 2 settings. In order to solve this issue, you need to set the :checksum
option for either your entire project.clj
or for a specific Maven :repositories
entry that contains Selenium-WebDriver's dependencies (e.g., Maven central). See Leiningen's repository README and example sample.project.clj
file for more information.
clj-webdriver Resources
External Resources
Please join the Google group if you use this library. I regularly post announcements about upcoming releases, and although I ensure all tests are passing and try to maintain good test coverage before releases, user testing is invaluable. Thank you!
Here's a complete example of how to log into Github, using the high-level Taxi API:
(use 'clj-webdriver.taxi)
;; Start up a browser
(set-driver! {:browser :firefox} "https://github.com")
(click "a[href*='login']")
(input-text "#login_field" "your-username")
(input-text "#password" "your-password")
(submit "#password")
(quit)
Forms can be filled out en masse using the quick-fill-submit
function:
(quick-fill-submit {"#login_field" "your-username"}
{"#password" "your-password"}
{"#password" submit})
For API documentation on the high-level Taxi API (shown above), please see its wiki page.
For reference documentation, run lein doc
at the root of this repo. For annotated source documentation, run lein marg
.
The master
branch of clj-webdriver houses code intended for the next minor-version release. If you want to propose new features for the next release, you're welcome to fork, make a topic branch and issue a pull request against the master
branch.
If you want to fix a bug in the current release, please pull against the appropriate branch for the current minor version, 0.5.x.
The namespace clj-webdriver.test.example-app.core
contains a Ring app (routing by Moustache) that acts as the "control application" for this project's test suite.
First, run lein compile
, then use the script/test
script to run clj-webdriver's tests. Its usage is as follows:
Usage: test {all|core|remote|taxi}
The core
option runs tests against the core API's using Firefox and Chrome. The remote
option runs tests for Grid and remote server/driver handling. The taxi
option tests just the Taxi API. The all
option runs through each of the other options once.
Note: If you just want to run the example app that clj-webdriver uses for its testing purposes, do the following:
- Open a terminal and run
lein repl
orlein swank
at the root of this project - Evaluate
(use 'clj-webdriver.test.example-app.core 'ring.adapter.jetty)
- Evaluate
(defonce my-server (run-jetty #'routes {:port 5744, :join? false}))
, making sure to adjust thetest-port
intest/clj_webdriver/test/core.clj
to whatever you use here.
Credits to mikitebeka/webdriver-clj for the initial code for this project and many of the low-level wrappers around the Selenium-WebDriver API.
Many thanks to those who have contributed so far (in nick-alphabetical order):
- mangaohua
- maxweber (Max Weber)
- RobLally (Rob Lally)
- smidas (Nathan Smith)
- ulsa (Ulrik Sandberg)
- xeqi (Nelson Morris)
See Github for an up-to-date list of contributors
I would also like to thank YourKit, LLC for providing its Java profiler to clj-webdriver developers as part of its contribution to the Open Source community.
YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.
Distributed under the Eclipse Public License, the same as Clojure.