accept ssl cert with marionette firefox webdrive p

2020-01-30 00:58发布

问题:

when using python splinter firefox 47 marionette new webdriver, it gives certificate error when access the website i want, i tried to accept ssl certs with

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

or using trustAllSSLCertificates instead of acceptSslCerts, but still gives me certificate error, what is the problem?

回答1:

The Firefox bug is now resolved: https://github.com/mozilla/geckodriver/issues/93

For now, you need to install the latest Firefox Nightly build (52 or 53) if you want to use this feature right away: https://nightly.mozilla.org/

Then, the following code will work (Python selenium only here, but my guess is that you can replace "acceptSslCerts" with the latest: "acceptInsecureCerts" in your code)

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")

edit: I am not sure how to pass the Nightly binary to Splinter though - https://github.com/cobrateam/splinter/pull/437 - hopefully the standard version of Firefox will be delivered on 2017-03-06 https://wiki.mozilla.org/RapidRelease/Calendar



回答2:

I am also facing this issue.

This has been acknowledged as a bug. https://bugzilla.mozilla.org/show_bug.cgi?id=1103196

There may be a workaround I havent tried it yet. Programmatically Install Certificate into Mozilla



回答3:

edit: it's not necessary to use the nightly firefox anymore

Rémi's answer is correct, thank you. I have been facing the same issue in Java, in case someone else stumbles across this here's the Java solution:

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

FirefoxDriver driver = new FirefoxDriver(caps);

there isnt a CapabilityType.ACCEPT_INSECURE_CERTS yet as per Selenium version 3.3.1 and the CapabilityType.ACCEPT_SSL_CERTS doesn't work, thus use "acceptInsecureCerts". Also the constructor FirefoxDriver(binary, profile, capabilities) is deprecated but AFAIK this is the only way to use a custom Firefox binary (?).