我的系统上安装了多个pfx证书(个人信息交换)。当我必须使用chrome登录时,我只需选择要选择的证书(Windows安全性)弹出窗口,其中显示选择证书。如何在selenium chrome驱动程序中实现此功能(选择证书)功能。
我在搜索时遇到的两种方式是 1)为每个证书创建不同的配置文件(如果我在生产服务器上有1000个证书,则不可扩展。) 2)使用PhantomJS Web浏览器实现:
我正在做的事情:
DesiredCapabilities cap = DesiredCapabilities.chrome();
ImmutableMap<String, String> commandLineArguments = ImmutableMap.<String, String>builder()
.put("web-security", "false")
.put("ssl-protocol", "any")
.put("ignore-ssl-errors", "true")
.put("webdriver-loglevel", "DEBUG")
.put("ssl-client-certificate-file", certificatePath)
.put("ssl-client-key-passphrase", certificatePassword)
.build();
String[] params = commandLineArguments.entrySet().stream()
.map(e -> String.format("--%s=%s", e.getKey(), e.getValue()))
.collect(Collectors.toList())
.toArray(new String[0]);
cap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, params);
cap.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new PhantomJSDriver(cap);
driver.get(Url);
但它给了我空白页面。我怀疑,我正在使用“ssl-client-key-passphrase”来表示“密码”的个人信息交换文件。如何在chrome功能上指定密码。或者我如何编码chromedriver来选择登录安全网站的证书?
更新2: 我必须将pfx证书转换为pem文件格式才能使其正常工作。