You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium-wire+Pytest运行自动化测试时出现证书验证错误

问题描述

使用Python + Pytest + Selenium + Selenium Wire执行自动化测试套件时,每次运行都会出现大量证书验证错误(如下所示),尽管测试最终能通过,但运行时间被大幅拉长(翻倍甚至更久):

DevTools listening on ws://127.0.0.1:64277/devtools/browser/45752844-8253-493e-a10e-75b31a3b2dce
[0813/205047.956:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for staging.admin.convercus.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205048.750:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for unpkg.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205050.405:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for fonts.googleapis.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205050.648:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for o146990.ingest.sentry.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205050.847:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for staging.convercus.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205050.848:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for staging.convercus.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205051.271:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for fonts.gstatic.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205053.887:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for www.googletagmanager.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205053.916:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for firebasestorage.googleapis.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205053.947:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for d29l98y0pmei9d.cloudfront.net failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205054.959:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for region1.google-analytics.com failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205055.246:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for convercus.supporthero.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

[0813/205055.248:ERROR:cert_verify_proc_builtin.cc(701)] CertVerifyProcBuiltin for convercus.supporthero.io failed:
----- Certificate i=1 (CN=Selenium Wire CA) -----
ERROR: No matching issuer found

同时伴随控制台预加载提示:

[0813/205103.885:INFO:CONSOLE(0)] "The resource https://staging.admin.convercus.io/_nuxt/285572a7272e0f5cf8a4.js was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://staging.admin.convercus.io/con/coupons3/add?type=REWARD&assignation_type=CAMPAIGN (0)
[0813/205103.885:INFO:CONSOLE(0)] "The resource https://staging.admin.convercus.io/_nuxt/fb3ac4e2e62a331ac0ac.js was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally."

原因分析

这些错误源于Selenium Wire生成自签名CA证书拦截HTTPS请求,但浏览器不信任该CA证书,导致每个请求都触发证书验证失败,进而拖慢测试执行速度。

解决方案

1. 信任Selenium Wire的CA证书

Selenium Wire首次运行时会在系统特定目录生成CA证书,手动将其导入浏览器信任列表即可解决:

  • 执行命令获取证书路径:python -c "from seleniumwire import webdriver; print(webdriver.cert_path)"
  • 打开浏览器证书管理界面,将证书导入为「受信任的根证书颁发机构」

2. 跳过特定域名的证书拦截

若不想全局信任CA证书,可在初始化WebDriver时指定无需拦截的域名,避免无关请求触发验证:

from seleniumwire import webdriver

options = {
    'exclude_hosts': [
        'unpkg.com',
        'fonts.googleapis.com',
        'fonts.gstatic.com',
        'www.googletagmanager.com',
        'firebasestorage.googleapis.com',
        'd29l98y0pmei9d.cloudfront.net',
        'region1.google-analytics.com',
        'convercus.supporthero.io',
        'o146990.ingest.sentry.io'
    ]
}

driver = webdriver.Chrome(seleniumwire_options=options)

3. 让浏览器忽略证书错误

通过ChromeOptions添加参数,强制浏览器跳过证书验证:

from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-ssl-errors')

driver = webdriver.Chrome(options=chrome_options)

4. 关闭DevTools日志输出

DevTools日志会占用额外资源,可通过配置禁用:

from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])

driver = webdriver.Chrome(options=chrome_options)

总结

优先推荐方案1,从根本上解决证书验证问题;若无法全局信任证书,可组合使用方案2+方案4,既能跳过无关域名拦截,又能减少日志输出,大幅提升测试速度。

内容的提问来源于stack exchange,提问作者Martin M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:10:27