Automating SSL client-side certificates in Firefox and Selenium testing
Creating Selenium Firefox test profile for SSL client-side certificates
You need to prepare Selenium’s WebDriver Firefox profile which has client certificates imported in.
First you launch WebDriver with the following configuration in your test code:
# Pre-seeded Firefox profile directory
profile_directory = os.path.join(os.path.dirname(__file__), "..", "..", "certs", "firefox-client-ssl-profile")
profile = FirefoxProfile(profile_directory)
# Make sure the client side certificate selection does not interrupt the test
# XXX: What happens in other language versions?
profile.set_preference("security.default_personal_cert", "Select Automatically")
self.driver = WebDriver(firefox_profile=profile)
self.selenium_helper = SeleniumHelper(self, self.driver)
self.selenium_helper.driver = self.driver
Start unit tests and drive them to the point Zope test server is up.
Stop tests with “import pdb ; pdb.set_trace()”
You should now have a Selenium’s “WebDriver” Firefox instance on your screen.
Import your client side certificate. Preferences > Advanced > Encryption > View certificates.
Import “client.p12” from your client-side certificate supply.
Visit in the URL triggering the client-side certificate dialog in Webdriver’s Firefox::
This should prompt you to accept the client side certificate against the test server.
Accept everything manually.
Visit in menu Help > Troubleshooting Information > Application Basics > Show in Finder.
This opens the temporary directory holding Webdriver’s active profile files.
Copy Firefox profile files
key3.db to your unit test package
WebDriver’s Firefox profile’s seed folder. This is the folder where Selenium picks seeds for
Firefox web driver when the test starts
Interrupt the tests. Restart the tests. Run until the pause again. In Webdriver’s Firefox
see in the settings that it now contains the certificates you did approve on the last run
in Preferences > Advanced > Encryption > View certificates.
- You must login to post comments