如何使用Ruby中的Selenium WebDriver记住Firefox中的SSL证书异常?

时间:2012-06-29 00:59:56

标签: ruby selenium webdriver ssl-certificate

所以我正在尝试使用Ruby中的Selenium WebDriver为我们的Web应用程序编写一套测试,但由于Firefox中的SSL证书问题,我甚至无法进入应用程序。我们的应用程序部署在本地服务器上,并使用自签名SSL证书进行测试/开发。当您只是手动使用浏览器时,您可以告诉Firefox设置安全性异常,并将其永久存储,这样可以正常工作。使用Selenium不太可能。首先,测试失败,然后才能设置永久异常。其次,当我设置异常时,Selenium会忘记它并再次显示屏幕。

我已经尝试使用firefox -p创建自定义配置文件并在该配置文件中添加例外并通过Selenium加载它,但Selenium似乎并不尊重该异常。我还尝试设置各种配置文件参数以使其忽略或接受证书,但Selenium似乎也忽略了这些配置文件参数。最后,我让Selenium添加了一个跳过无效证书屏幕的扩展,但它仍然无效。这是我的代码:

require 'rubygems'
require 'selenium-webdriver'

profile = Selenium::WebDriver::Firefox::Profile.from_name "Selenium"

profile.add_extension("./skip_cert_error-0.3.2-fx.xpi")
profile["browser.xul.error_pages"] = "false"
profile["browser.ssl_override_behavior"] = "1"

driver = Selenium::WebDriver.for(:firefox, :profile => profile)

2 个答案:

答案 0 :(得分:0)

我明白了。诀窍是将证书下载到站点,并将其保存到某个地方,然后返回Firefox设置(加载Selenium配置文件),然后手动上传证书,然后“编辑信任”以信任证书。

答案 1 :(得分:0)

还有另一种方法可以给这只猫上皮。我正在使用Cucumber \ Ruby \ Selenium框架,传统的配置文件调整用于跳过不良证书也不适用于我。我最终做的是在Ruby代码中创建/新建一个FF配置文件,并为FF配置文件设置一个成员变量(assume_untrusted_certificate_issuer)。然后我将配置文件传递给browser \ driver实例。看看:

profile = Selenium::WebDriver::Firefox::Profile.new   
profile.assume_untrusted_certificate_issuer=false
browser = Selenium::WebDriver.for :firefox, :profile => profile

这一切都存在于我的env.rb文件中。

此处的版本:

Windows7 Pro
Ruby 1.9.3,
Selenium Webdriver Gem 2.19, and
Firefox 14.0.1

非常可爱,是吗?