Selenium Chrome 抑制/关闭客户端证书选择对话框

Posted

技术标签:

【中文标题】Selenium Chrome 抑制/关闭客户端证书选择对话框【英文标题】:Selenium Chrome suppress/dismiss client certificate selection dialog 【发布时间】:2015-07-24 07:53:12 【问题描述】:

如何使用 selenium(chrome 驱动程序)禁止或自动关闭客户端证书选择对话框?

我无法使用此证书,因为它存储在芯片卡上,我必须输入 PIN。如果没有可用的卡,我们的网站使用了基于凭据的登录,我想对此进行测试。

【问题讨论】:

是 iframe 弹出窗口还是警报? 这是来自 chrome 的对话框(不是由客户端代码打开的)。如果网站发送某些标头表示接受客户端证书,它就会弹出。它像一个警告对话框一样显示。 可以这样绕过这个弹出窗口吗? user:password@example.com 没有。它不起作用。 【参考方案1】:

我找到了解决这个问题的方法: 您必须使用 chrome 参数 - AutoSelectCertificateForUrls

将此添加到 Windows 注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls\1 = ""pattern":"https://yoursite.com","filter":"

【讨论】:

【参考方案2】:

在 linux 中你需要这个文件集:

$HOME/etc/opt/chrome/policies/managed/auto_select_certificate.json

有了这个内容:


  "AutoSelectCertificateForUrls": [ "\"pattern\":\"*\",\"filter\":" ]

有了这个设置,它应该自动允许每个安装的客户端证书。

关于如何在 C# 中使用 Docker 解决它的详细文章可以在我在这里写的一篇文章中找到: https://sgedda.medium.com/running-selenium-with-chromedriver-together-with-client-certificate-set-in-headful-mode-with-net-a79bde19e472

【讨论】:

【参考方案3】:

尝试使用“--ignore-certificate-errors”和“--ignore-urlfetcher-cert-requests”参数启动 chrome。

ChromeOptions opts = new ChromeOptions();
opts.addArguments("ignore-certificate-errors","ignore-urlfetcher-cert-requests");
WebDriver driver = new ChromeDriver(opts);
driver.get("http://www.google.com");
System.out.println("Title:" + driver.getTitle());

【讨论】:

不,它仍然显示对话框:(我用ignore-urlfetcher-cert-requests--ignore-urlfetcher-cert-requests尝试过 有趣的是:如果我将它添加到我的 chrome 桌面链接的命令行参数中,它就可以工作。但不是硒。对于ignore-certificate-errors chrome 来说,这是一个未知的命令行开关。但是--start-maximized等其他参数传递正确。 @Sven-MichaelStübe 请在以下链接中提出有关 chromedriver 的问题:code.google.com/p/chromedriver/issues Sven-Michael,你发现这个问题了吗?我需要完全一样的。谢谢!

以上是关于Selenium Chrome 抑制/关闭客户端证书选择对话框的主要内容,如果未能解决你的问题,请参考以下文章

Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器

如何使用 python selenium 关闭另一个 chrome 弹出窗口

在 Selenium 中,如何关闭日志记录?

selenium打不开chrome

Python+Selenium自动化测试框架-打开和关闭浏览器(Firefox/IE/Chrome)

ConnectionResetError: [WinError 10054] 现有连接被 ChromeDriver Chrome Selenium Django 的远程主机错误强行关闭