Selenium Chrome 阻止/取消客户端证书选择对话框

8
我该如何使用selenium(chrome driver)抑制或自动关闭客户端证书选择对话框?
我无法使用此证书,因为它存储在芯片卡上,需要输入PIN码。如果没有卡可用,我们的网站将使用基于凭据的登录,并且我想测试这个功能。
参考图片:chrome client certificate selection (german)

那是iframe弹出窗口还是警告框? - Helping Hands
这是来自 Chrome 的对话框(不是由客户端代码打开的)。如果网站发送某些标头以表示接受客户端证书,则会弹出该对话框。它显示为警报对话框。 - Sven-Michael Stübe
这种方式可以绕过弹出窗口吗?http://user:password@example.com - automatictester
不行。 - Sven-Michael Stübe
5个回答

5
我发现了解决这个问题的方法: 您必须使用Chrome参数 - AutoSelectCertificateForUrls
将其添加到Windows注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls\1 = "{"pattern":"https://yoursite.com","filter":{}}"

3

在Linux中,您需要设置这个文件:

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

With this content:

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

设置这个应该会自动允许每个已安装的客户端证书。

如何在C#和Docker中解决此问题的详细文章可以在我写的文章中找到: https://sgedda.medium.com/running-selenium-with-chromedriver-together-with-client-certificate-set-in-headful-mode-with-net-a79bde19e472


0

尝试下面的代码。它对我有效:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--ignore-urlfetcher-cert-requests");
webDriver = New ChromeDriver(chromeOptions);

0
尝试使用“--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 - Sven-Michael Stübe
1
有趣的是,如果我将此添加到Chrome桌面链接的命令行参数中,它可以正常工作。但在Selenium中不行。对于“ignore-certificate-errors”,Chrome说这是一个未知的命令行开关。但像“--start-maximized”这样的其他参数已正确传递。 - Sven-Michael Stübe
@Sven-MichaelStübe 请在下面链接中提出关于chromedriver的问题: https://code.google.com/p/chromedriver/issues - srees
Sven-Michael,你解决了这个问题吗?我需要完全相同的。谢谢! - brobee

0
我遇到了同样的问题。您可以通过在Selenium中添加以下参数到ChromeOptions来直接取消这个确认弹窗:"--ignore-urlfetcher-cert-requests"。
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-urlfetcher-cert-requests");
driver = new ChromeDriver(options);

你必须添加:
chrome_options.add_argument('--ignore-urlfetcher-cert-requests')

无论如何,对我来说都有效!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接