使用 marionette firefox webdrive python splinter 接受 ssl 证书

accept ssl cert with marionette firefox webdrive python splinter

当使用 python splinter firefox 47 marionette 新的 webdriver 时,它在访问我想要的网站时给出证书错误,我试图接受

的 ssl 证书

browser = Browser('firefox', capabilities = {'marionette': True, 'acceptSslCerts': True})

或使用 trustAllSSLCertificates 而不是 acceptSslCerts,但仍然给我证书错误,这是什么问题?

我也遇到了这个问题。

这已被确认为错误。 https://bugzilla.mozilla.org/show_bug.cgi?id=1103196

可能有一个解决方法我还没有尝试过。 Programmatically Install Certificate into Mozilla

Firefox 错误现已解决: https://github.com/mozilla/geckodriver/issues/93

目前,如果您想立即使用此功能,您需要安装最新的 Firefox Nightly 版本(52 或 53): https://nightly.mozilla.org/

然后,以下代码将起作用(Python selenium 仅在这里,但我的猜测是您可以将 "acceptSslCerts" 替换为最新的:"acceptInsecureCerts" 在您的代码中)

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

caps = DesiredCapabilities.FIREFOX.copy()
caps['acceptInsecureCerts'] = True
ff_binary = FirefoxBinary("path to the Nightly binary")

driver = webdriver.Firefox(firefox_binary=ff_binary, capabilities=caps)
driver.get("https://expired.badssl.com")

编辑:我不确定如何将 Nightly 二进制文件传递给 Splinter - https://github.com/cobrateam/splinter/pull/437 - 希望 Firefox 的标准版本将在 2017-03-06 交付 https://wiki.mozilla.org/RapidRelease/Calendar

编辑: 没有必要再使用 nightly firefox

Rémi 的回答是正确的,谢谢。我在 Java 中遇到了同样的问题,以防其他人偶然发现这里是 Java 解决方案:

DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability("acceptInsecureCerts", true);

FirefoxDriver driver = new FirefoxDriver(caps);

根据 Selenium 版本 3.3.1 还没有 CapabilityType.ACCEPT_INSECURE_CERTS,并且 CapabilityType.ACCEPT_SSL_CERTS 不起作用,因此使用 "acceptInsecureCerts"。构造函数 FirefoxDriver(binary, profile, capabilities) 也已弃用,但 AFAIK 这是使用自定义 Firefox 二进制文件(?)的唯一方法。