是否可以使用Selenium和任何浏览器测试客户端SSL证书?例如。你能创建一个Web驱动程序并为它提供虚拟证书吗?或者使用准备好的Firefox个人资料?
答案 0 :(得分:15)
为SSL客户端证书创建Selenium Firefox测试配置文件
您需要准备Selenium的WebDriver Firefox配置文件,该配置文件已导入客户端证书。
首先,在测试代码中使用以下配置启动WebDriver:
# Pre-seeded Firefox profile directory
profile_directory = os.path.join(os.path.dirname(__file__), "..", "..", "certs", "firefox-client-ssl-profile")
self.assertTrue(os.path.exists(profile_directory))
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
启动单元测试并将它们驱动到Zope测试服务器启动的程度。 使用“import pdb; pdb.set_trace()”
停止测试您现在应该在屏幕上有一个Selenium的“WebDriver”Firefox实例。
导入您的客户端证书。偏好>高级>加密>查看证书。 从客户端证书供应中导入“client.p12”。
访问在Webdriver的Firefox ::
中触发客户端证书对话框的URL https://yourservevr/triggers-client-side-certificate-ssl-handshake
这会提示您接受针对测试服务器的客户端证书。 手动接受所有内容。
访问菜单帮助>故障排除信息>应用基础>在Finder中显示。 这将打开包含Webdriver活动配置文件的临时目录。
将Firefox个人资料文件cert8.db
和key3.db
复制到您的单元测试包中
WebDriver的Firefox配置文件的种子文件夹。这是Selenium为其挑选种子的文件夹
测试开始时的Firefox Web驱动程序firefox-client-ssl-profile
。
中断测试。重启测试。再次运行直到暂停。在Webdriver的Firefox中 在设置中查看它现在包含您在上次运行时批准的证书 在首选项>高级>加密>查看证书。
更多信息
答案 1 :(得分:0)
我不知道这是否有帮助,但您可以更改配置文件中的某些首选项。在Java中,你可以这样做。
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("default"); //change profile name. there is a note somewhere on how to change it
profile.setPreference(uaKey, uaValue);
profile.setAcceptUntrustedCertificates(acceptUntrustedSsl);
我不确定这是你需要的。