如何使Selenium WebDriver动态选择客户端证书而不会直观地检测弹出窗口

neX*_*Xus 15 java internet-explorer selection client-certificates selenium-iedriver

我正在尝试使用Java和Selenium来测试需要客户端证书的网站.当我浏览到我的网站时,我会得到一个类似下面的弹出窗口,以选择正确的证书.

Windows安全:选择证书

我的要求如下:

  • 按名称选择证书
  • 在不同版本的Windows/IE/Edge上

理想情况下弹出窗口从未显示过; 即,解决方案将涉及调用某些API或设置一些配置以固定要使用的正确证书.


我自己的解决方案:

  • 我尝试了一个基于使用SikuliX可视化检测正确证书的解决方案(这确实有效),但我想知道是否有更好的解决方案不依赖于视觉检测弹出窗口.如果微软决定改变这个弹出窗口的外观,那么在Windows的多个版本中出现故障的可能性较小,这是未来的证据.

  • 我有的另一个想法(但我不知道如何/是否可能)是删除所有已安装的证书,除了一个,以便永远不会显示弹出窗口:

    • 备份整个商店
    • 删除IE可以使用的所有客户端证书(我需要的除外)
    • 登录不再需要任何证书选择
    • 还原备份的存储

    有谁知道如何做到这一点(在Java中,可能会调用CLI命令)?

  • 是否可以启动(使用Selenium Java)一个只知道我需要的单一证书的Internet Explorer窗口?

  • 是否可以在Internet Explorer中为给定域设置默认证书?

Joo*_*ols 0

我不能肯定地说,但如果硒不可能做到这一点,我不会感到惊讶。

这个问题并没有让我充满希望: Selenium can't deal with Confirm Certificate popup in IE

你离开网页越远,转向本机浏览器和操作系统控制,Selenium 就越无能为力。

正如链接问题的唯一答案所述:您可以禁用浏览器中的弹出窗口,这可能是也可能不是一个可行的解决方案。

如果您不想走这条路,人们通常会求助于 Java 机器人来处理 selenium 驱动程序无法完成的事情,例如与打印对话框和其他此类控件进行交互。

请参阅 mouseMove、mousePress、mouseRelease 您将调用其中的每一个,为 mouseMove 提供按钮位置。 https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html