【问题标题】:How to handle self signed certificate error in IE8 using Selenium Webdriver + Java如何使用 Selenium Webdriver + Java 处理 IE8 中的自签名证书错误
【发布时间】:2012-06-17 13:47:33
【问题描述】:

我已经被这个问题困扰了两天了。

场景:

需要测试的网站有自签名证书。所以 Internet Explorer (8 in windows XP_ 显示

“本网站提供的安全证书并非由受信任的证书颁发机构颁发。 本网站提供的安全证书是针对不同网站的地址颁发的。”

现在这在 IE8 和自签名证书的情况下是非常自然的,所以我采取了以下措施没有用

  1. 在 IE 中手动添加/安装证书作为受信任的根证书。但它不会显示在列表中,但会成功添加到所有其他选项卡,即受信任的根发布者、中间发布者授权、其他人。
  2. 在“服务器”下将相同的证书添加到 Firefox 中没有任何问题,并且可以正常工作。
  3. 我尝试使用以下代码,但其中一个适用于 selenium

    Proxy proxy = new Proxy();
    proxy.setProxyType(ProxyType.MANUAL);
    Proxy.setSslProxy("trustAllSSLCertificates");
    DesiredCapabilities capabilities1 = DesiredCapabilities.internetExplorer();
    capabilities1.setCapability(CapabilityType.PROXY, proxy);
    

当这不起作用时,我尝试使用

DesiredCapabilities capabilities = new DesiredCapabilities();
                            capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 

我已经安装了cybervillans 证书。

  1. 我已经尝试过 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312 方法很清楚是win7的。

5.我什至尝试将 URL 更改为颁发机构,但问题仍然存在。

现在我别无选择。 谁能向我指出我该如何进行? 看来我永远被 IE8 困住了。

我在 Google 和这个网站上进行了很多搜索。但找不到我的问题的解决方案。

【问题讨论】:

  • 你在用IEDriverServer吗?
  • @A.J 我正在使用 InternetExplorer Web 驱动程序。是的。里面有 IEdriverserver

标签: selenium internet-explorer-8 ssl-certificate


【解决方案1】:

当我在我们网站的开发/测试版本中使用 selenium 时,我经常在 IE 屏幕上显示无效证书。 要传递这些,您将以下内容发送到 IWebDriver 实例

driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()")

您看到的屏幕可能与错误证书屏幕略有不同,因此只需调整 getElementById 选择器以匹配锚的 Id。

【讨论】:

  • 我知道这种方法。但是因为我的测试包必须是跨浏览器兼容的,所以我也需要它来为 FF 工作。现在,如果我将信任证书放在 FF 中的受信任源中,则信任证书可以正常工作,但在这种情况下,如果我将其放在我的脚本中,那么 FF(或为此目的的 chrome)将失败>这是我现在关心的问题。
  • 每个浏览器处理证书问题的方式不同。当我使用 ChromeDriver 时,我传递了 --ignore-certificate-errors 参数。 IE 不能这样做,所以我需要一种传递表单的方法。不知道 FF,我不经常使用该浏览器进行测试。我还在 IWebDriver 周围包裹了一个外观,它允许根据驱动程序实现自定义 SSL 证书的协商
【解决方案2】:

我像罗伯特写的那样使用它,像这样:

 if (driver instanceof InternetExplorerDriver) {
        driver.navigate().to("javascript:document.getElementById('overridelink').click()");
    }

【讨论】:

    【解决方案3】:

    此更改将永久接受 IE 中的所有证书错误,但仍然是优雅的解决方案: https://stackoverflow.com/a/7738795/2546759

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 2014-08-21
      • 2013-02-04
      • 1970-01-01
      • 2012-08-24
      相关资源
      最近更新 更多