Chlenmedriver in Selenium和SSL证书

Pav*_*cek 8 selenium google-chrome ssl-certificate

我正在使用Selenium来测试一个具有HTTP Auth的网站,现在甚至是SSL证书.

作为HTTP Basic Authentification的解决方法,我正在使用ChromeDriver - http://code.google.com/p/selenium/wiki/ChromeDriver并以格式打开网址

https://username:password@my-test-site.com
Run Code Online (Sandbox Code Playgroud)

但是现在出于安全原因,需要在PC上安装客户端证书才能登录该应用程序.

但是,ChromeDriver无法看到"选择证书"提示,我甚至无法将其切换为警报.

有人解决了这个问题吗?

Tom*_*ski 6

您可以通过添加包含以下内容的注册表项,告知Chrome浏览器使用特定客户端证书作为特定URL:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls\1 = "{\"pattern\":\"https://www.example.com\",\"filter\":{\"ISSUER\":{\"CN\":\"cn of issuer\"}}}"
Run Code Online (Sandbox Code Playgroud)

您可以通过在同一分支下添加其他键来添加其他条目.

它在Linux上有点复杂,因为您需要在以下位置修改json格式的首选项:

~/.config/chromium/Default/Preferences
Run Code Online (Sandbox Code Playgroud)

看起来上述选项仅适用于加入Active Directory域的计算机.如果上面的步骤不起作用您可以尝试使用预配置模板介绍可从以下网址下载的变化:https://www.chromium.org/administrators/policy-templates


Dav*_*ebb 5

您可以告诉Chrome使用--ignore-certificate-errors命令行开关忽略不受信任的证书错误,而不是安装客户端证书.

为此,请ChromeDriver按如下方式创建您的实例:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
driver = new ChromeDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

  • 问题是,我试图访问的网站实际上需要安装客户端证书.而且因为我们有更多的测试环境,每个环境都需要特定的证书...... (2认同)