当访问一个https的网站,通常浏览器会收到一份证书,该证书包含了服务器的公钥以及CA的签名。
当浏览器接收到服务器发过来的公钥证书时有两种情况:
浏览器已经安装了CA的公钥解开CA的签名,并HASH得到的证书内容与之相比较,一致则相信由CA颁发过来的证书
浏览器并没有CA的公钥,也就解不来CA的签名,用户可以选择相信,并把该站点设置为信任站点
大多数CA颁发证书是需要收费的,因此也有很多https的网站用的是非权威服务器颁发的证书,使用浏览器打开此类https网站,浏览器检测到证书非权威时为了安全性考虑会弹出提示信息,由用户决定是否继续访问站点。平常我们选择添加例外并继续访问就行了,下次访问同个站点就不会弹出提示。但是用Selenium进行测试时不希望遇到这种问题,因为selenium启动firefox时,每次都会新建一个profile作为启动的profile。这样无论你添加多少次例外,测试的时候都需要手动选择,打断了测试,自动化无法继续进行。因此事先对Firefox进行配置,使其相信被测站点,使自动化更加容易和稳定。
如何解决这个问题呢?思路很简单
一、创建一个特殊profile,此profile里添加了测试站点为安全例外。
二、selenium启动firefox时调用此profile,而不是创建新profile。
因为调用的profile预添加了站点为例外,访问站点时便不会再弹出安全提示了。
下面看看具体如何设置
1、创建新的profile,打开cmd,进入FireFox安装路径,然后输入命令firefox -p
cd C:\Program Files (x86)\Mozilla Firefox
firefox -p
弹出如下对话框,点击创建配置文件
在弹出的新窗口中点击下一步,然后命名随便,点击完成,如下,这样便生成了新的profile。注意复制一下保存路径,等会儿会用到。
2、创建新的profile后第一步操作还没完,我们得往profile里添加测试站点为安全例外。
这儿如下图选择新建的profile并点击启动Firefox按钮,注意去掉勾选启动时不询问并使用选定的配置文件这个选项。如果勾选,以后每次启动都是调用新建的profile,那么你会发现之前添加的Firefox插件,添加的书签、证书等等都没了。
以新的profile起动firefox后,我们直接访问测试站点,这个时候会弹出安全提示,我们根据提示添加安全例外。添加完可以在Firefox选项--高级--证书里查看是否存在添加的测试站点,如下图。当然也可以直接在这儿点击添加例外来添加站点。
到这儿,第一步就设置完了,我们创建了新的profile,也往profile里添加了例外。
3、selenium启动firefox时调用此profile,而不是创建新profile。这步很简单,看脚本就明白了。