使用 Selenium 2 WebDriver 访问 HTTPS URL 时出现 IE9 安全证书问题

软件测试 硒2 网络驱动程序 即9
2022-02-07 23:53:51

我有一些用于 Firefox 和 Internet Explorer 9 的 Selenium 2 WebDriver 测试用例。当我在 IE9(Windows 7 64 位)上访问 HTTPS URL 时,我得到:

本网站的安全证书有问题。

此时测试挂起并最终失败。

我试过了:

  • 让 Selenium 点击“继续访问此网站(不推荐)”。关联。这无法完成,因为此错误页面不是您常用的页面。与 JavaScript 相同 - 它不执行。

  • 我尝试添加阻止证书错误页面显示的注册表项(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312) - 不起作用。可能是因为我使用的是带有 IE9 的 Windows 7。

  • 按照这个建议,我尝试使用 BrowserMob 代理,但是那里的文档很少,我无法解决。

最后,我没有对我的 PC 的管理员访问权限——例如​​,没有访问组策略的权限。Selenium 2 WebDriver 在 Firefox 上运行良好。我在 IE Internet 选项中启用了所有安全区域,如果我在其他 URL (HTTP) 上运行测试,则没有问题。

有没有人解决这个问题?有谁知道有效地使用 BrowserMob 代理(或任何其他代理)来克服这个问题?

谢谢,达摩

4个回答

根据您的特定公司的设置方式,有几种解决方案。最简单的方法是,如果您从中运行测试的机器与托管站点的服务器位于同一域中。让管理服务器的团队创建自签名证书并将证书添加到您的计算机。如果自签名路线不起作用,您可能必须让另一个团队参与其中。如果有人能够从您的生产证书颁发机构颁发证书,请让他们创建并添加到您的测试服务器。然后,将证书导入您的机器。

在我们的网络和基础设施团队听说并主动提供帮助之前,几个月来一直在努力解决这个特殊问题。

尝试点击“继续浏览本网站(不推荐)”。按以下方式链接(在 EI7、IE8 上适用于我):

webDriver.navigate().to("javascript:document.getElementById('overridelink').click()");

好的,我刚刚使用 C# 和以下代码在 IE9 下工作:

IWebDriver driver = new InternetExploreDriver();
driver.Url("Site");
driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");

现在它将进入真实页面。

我很高兴我找到了这个消息线程。我必须有不同版本的 webdriver,并且以下行适用于我使用 IE8。谢谢。

    driver.execute_script("document.getElementById('overridelink').click()");

编辑添加:忘了提到我的驱动程序 = webdriver.Ie() !