How to deal with certificates using Selenium?
For the Firefox, you need to set accept_untrusted_certs
FirefoxProfile()
option to True
:
from selenium import webdriverprofile = webdriver.FirefoxProfile()profile.accept_untrusted_certs = Truedriver = webdriver.Firefox(firefox_profile=profile)driver.get('https://cacert.org/')driver.close()
For Chrome, you need to add --ignore-certificate-errors
ChromeOptions()
argument:
from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_argument('ignore-certificate-errors')driver = webdriver.Chrome(chrome_options=options)driver.get('https://cacert.org/')driver.close()
For the Internet Explorer, you need to set acceptSslCerts
desired capability:
from selenium import webdrivercapabilities = webdriver.DesiredCapabilities().INTERNETEXPLORERcapabilities['acceptSslCerts'] = Truedriver = webdriver.Ie(capabilities=capabilities)driver.get('https://cacert.org/')driver.close()
Actually, according to the Desired Capabilities
documentation, setting acceptSslCerts
capability to True
should work for all browsers since it is a generic read/write capability:
acceptSslCerts
boolean
Whether the session should accept all SSL certs by default.
Working demo for Firefox:
>>> from selenium import webdriver
Setting acceptSslCerts
to False
:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX>>> capabilities['acceptSslCerts'] = False>>> driver = webdriver.Firefox(capabilities=capabilities)>>> driver.get('https://cacert.org/')>>> print(driver.title)Untrusted Connection>>> driver.close()
Setting acceptSslCerts
to True
:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX>>> capabilities['acceptSslCerts'] = True>>> driver = webdriver.Firefox(capabilities=capabilities)>>> driver.get('https://cacert.org/')>>> print(driver.title)Welcome to CAcert.org>>> driver.close()
For Firefox:
ProfilesIni profile = new ProfilesIni();FirefoxProfile myprofile = profile.getProfile("default");myprofile.setAcceptUntrustedCertificates(true);myprofile.setAssumeUntrustedCertificateIssuer(true);WebDriver driver = new FirefoxDriver(myprofile);
For Chrome we can use:
DesiredCapabilities capabilities = DesiredCapabilities.chrome();capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));driver = new ChromeDriver(capabilities);
For Internet Explorer we can use:
DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); Webdriver driver = new InternetExplorerDriver(capabilities);
For Firefox Python:
The Firefox Self-signed certificate bug has now been fixed:accept ssl cert with marionette firefox webdrive python splinter
"acceptSslCerts" should be replaced by "acceptInsecureCerts"
from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilitiesfrom selenium.webdriver.firefox.firefox_binary import FirefoxBinarycaps = DesiredCapabilities.FIREFOX.copy()caps['acceptInsecureCerts'] = Trueff_binary = FirefoxBinary("path to the Nightly binary")driver = webdriver.Firefox(firefox_binary=ff_binary, capabilities=caps)driver.get("https://expired.badssl.com")