Ghost Driver is a pure JavaScript implementation of the WebDriver Wire Protocol for PhantomJS. It's going to be a Remote WebDriver that uses PhantomJS as back-end.
- Under development / almost ready for 1.0
- Code Hardening in progress: before raising bugs, check if's a "not yet implemented" feature first
- ~90% of the WireProtocol currently implemented
- Version 1.0 will implement all the commands EXCEPT the ones related with Mobile WebDrivers (see spreadsheet below)
- DEPENDS ON MY BRANCH OF PHANTOMJS, as mentioned below in the Requirements section
You can monitor development progress at this Google Spreadsheet.
At the moment you need to compile a specific version of PhantomJS to run GhostDriver. This is because GhostDriver needed new features in PhantomJS to fulfill all the functionalities of the WebDriver "protocol".
- Prepare your machine for building PhantomJS as documented here
git remote add detro https://github.com/detro/phantomjs.git
git checkout -b detro-ghostdriver-dev remotes/detro/ghostdriver-dev
- Compile as you would compile PhantomJS
Here I show how to clone this repo and kick start the (Java) tests. You need Java SDK to run them (I tested it with Java 7, but should work with Java 6 too).
git clone https://github.com/detro/ghostdriver.git
- Configure
phantomjs_exec_path
insideghostdriver/test/config.ini
to point at the build of PhantomJS you just did - Configure
phantomjs_driver_path
insideghostdriver/test/config.ini
to the absolute path of your clone ofghostdriver/src/main.js
cd ghostdriver/test; ./gradlew test
phantomjs ghostdriver/src/main.js PORT
- Configure
driver
insideghostdriver/test/config.ini
to point at the URLhttp://localhost:PORT
cd ghostdriver/test; ./gradlew test
- Launch the grid server, which listens on 4444 by default:
java -jar /path/to/selenium-server-standalone-2.25.0.jar -role hub
- Register with the hub:
phantomjs ghostdriver/src/main.js 8080 http://127.0.0.1:4444
- Now you can use your normal webdriver client with
http://127.0.0.1:4444
and just requestbrowserName: phantomjs
In April 2012 I (Ivan De Marino) presented GhostDriver at the Selenium Conference: slides and video.
- Speed: makes development faster
- Speed: makes THE developer happier
- Speed: makes leaves more time for beer, video-games, cycling or whatever you fancy
- ...
- PhantomJS is not a "Real" Browser, but "just" very very close to one
You can contribute testing it and reporting bugs and issues, or submitting Pull Requests. Any help is welcome, but bear in mind the following base principles:
- Squash your commits by theme: I prefer a clean, readable log
- Maintain consistency with the code-style you are surrounded by
- If you are going to make a big, substantial change, let's discuss it first
GhostDriver is distributed under BSD License.