1. First, create the profile on your local machine:
firefox -ProfileManager --no-remote
2. Install the Firebug add-on, enabling the Net/Console panels after the plug-in is installed (so these settings get saved inside your prefs.js file))
3. Tar up the profile directory (stored inside ~/.mozilla/firefox with some special hash prefix i.e. ~/.mozilla/firefox/60f709x.selenium) and transfer to the machine that will invoke
(At the time of this writing, you also must add a user.js file to the profile directory, since the Selenium Python bindings expect to find this file even though this file does not normally get created by default -- see patch submitted at http://code.google.com/p/selenium/issues/detail?id=1692 and http://kb.mozillazine.org/User.js_file)
4. Unzip the file into a directory.
Then the profile can be added as follows:
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile profile = FirefoxProfile(profile_directory="/home/myuserid/.mozilla") profile.update_preferences() # increases the num of simultaneous connections among other things from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.firefox.firefox_profile import FirefoxProfile profile = FirefoxProfile(profile_directory="/home/myuserid/.mozilla") selenium_browser = webdriver.Remote(desired_capabilities=DesiredCapabilities.FIREFOX, command_executor=http://anotherhost.com:4444/wd/hub', browser_profile=profile)
The Python bindings for Selenium 2 will take the directory, zip it up, base-64 encode, and transfer it over the network to the Selenium RC server. Note that the old Selenium 1.0 way of using the java -jar selenium-server.jar -firefoxProfileTemplate “<selenium Profile Directory>" (as described in http://girliemangalo.wordpress.com/2009/02/05/creating-firefox-profile-for-your-selenium-rc-tests/) seems to be ignored for WebDriver-based Selenium 2 tests, so if you're planning on using only Selenium 2, the approach described approach seems to be the way things work.