Marionette_client is a project mainly written in ..., it's free.
Python client for Marionette
Marionette is a Mozilla project to enable remote automation in Gecko-based projects, including desktop Firefox, mobile Firefox, and Boot-to-Gecko.
It utilizes the remote-debugger inside Gecko for the transport layer of the Marionette server. The commands the Marionette server will eventually implement are based on Selenium's JSON Wire Protocol, although not all commands are presently implemented, and additional commands will likely be added.
No special requirements, unless you're using the Selenium proxy, in which case you'll need to install the Selenium Python bindings using:
pip install selenium
Tests can be written using the Marionette client directly, or by writing Selenium tests and using the Selenium proxy. See test_protocol.py for an example of the former and test_selenium.py for an example of the latter.
Although test_selenium.py uses the Python binding for Selenium, any of the Selenium webdriver clients should be usable with Marionette.