How to deal with certificates using Selenium? How to deal with certificates using Selenium? selenium selenium

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