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 弹出窗口
Python+Selenium自动化测试框架-打开和关闭浏览器(Firefox/IE/Chrome)
ConnectionResetError: [WinError 10054] 现有连接被 ChromeDriver Chrome Selenium Django 的远程主机错误强行关闭