How to deal with certificates using Selenium?

I am using Selenium to launch a browser. How can I deal with the webpages (URLs) that will ask the browser to accept a certificate or not?

In Firefox, I may have a website like that asks me to accept its certificate like this:

Firefox

On the Internet Explorer browser, I may get something like this:

Enter image description here

On Google Chrome:

Google Chrome

I repeat my question: How can I automate the acceptance of a website's certificate when I launch a browser (Internet Explorer, Firefox and Google Chrome) with Selenium (Python programming language)?

For the Firefox, you need to set accept_untrusted_certs FirefoxProfile() option to True:

    from selenium import webdriver

    profile = webdriver.FirefoxProfile()
    profile.accept_untrusted_certs = True

    driver = 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 webdriver

    options = 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 webdriver

    capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
    capabilities['acceptSslCerts'] = True

    driver = 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()

From: stackoverflow.com/q/24507078

Back to homepage or read more recommendations: