Para Firefox, debe configurar la accept_untrusted_certs
FirefoxProfile()
opción para 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()
Para Chrome, debe agregar un argumento:--ignore-certificate-errors
ChromeOptions()
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()
Para Internet Explorer, debe configurar la acceptSslCerts
capacidad deseada:
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
capabilities['acceptSslCerts'] = True
driver = webdriver.Ie(capabilities=capabilities)
driver.get('https://cacert.org/')
driver.close()
En realidad, de acuerdo con la Desired Capabilities
documentación , la acceptSslCerts
capacidad de configuración True
debería funcionar para todos los navegadores, ya que es una capacidad genérica de lectura / escritura:
acceptSslCerts
booleano
Si la sesión debe aceptar todos los certificados SSL de forma predeterminada.
Demostración funcional para Firefox:
>>> from selenium import webdriver
Ajuste acceptSslCerts
a 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()
Ajuste acceptSslCerts
a 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()
driver.get("javascript:document.getElementById('overridelink').click()")
allow-running-insecure-content
yignore-certificate-errors
yallow-insecure-localhost
yunsafely-treat-insecure-origin-as-secure
(puede intentar encontrar más mediante:strings /opt/google/chrome/chrome | grep insecure
y grepping similar)Para Firefox:
ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("default"); myprofile.setAcceptUntrustedCertificates(true); myprofile.setAssumeUntrustedCertificateIssuer(true); WebDriver driver = new FirefoxDriver(myprofile);
Para Chrome podemos usar:
DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors")); driver = new ChromeDriver(capabilities);
Para Internet Explorer podemos usar:
fuente
Para Firefox Python:
El error del certificado autofirmado de Firefox ahora se ha solucionado: acepte el certificado ssl con marionette firefox webdrive python splinter
"acceptSslCerts" debe reemplazarse por "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")
fuente
Y en C # (.net core) usando
Selenium.Webdriver
ySelenium.Chrome.Webdriver
así:ChromeOptions options = new ChromeOptions(); options.AddArgument("--ignore-certificate-errors"); using (var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),options)) { ... }
fuente
Para las personas que responden a esta pregunta relacionada con el cromo sin cabeza a través de python selenium, puede encontrar https://bugs.chromium.org/p/chromium/issues/detail?id=721739#c102 útil.
Parece que puedes hacer
chrome_options = Options() chrome_options.add_argument('--allow-insecure-localhost')
o algo similar a lo siguiente (es posible que deba adaptarse para Python):
ChromeOptions options = new ChromeOptions() DesiredCapabilities caps = DesiredCapabilities.chrome() caps.setCapability(ChromeOptions.CAPABILITY, options) caps.setCapability("acceptInsecureCerts", true) WebDriver driver = new ChromeDriver(caps)
fuente
ChromeOptions options = new ChromeOptions().addArguments("--proxy-server=http://" + proxy); options.setAcceptInsecureCerts(true);
fuente
Javascript:
const capabilities = webdriver.Capabilities.phantomjs(); capabilities.set(webdriver.Capability.ACCEPT_SSL_CERTS, true); capabilities.set(webdriver.Capability.SECURE_SSL, false); capabilities.set('phantomjs.cli.args', ['--web-security=no', '--ssl-protocol=any', '--ignore-ssl-errors=yes']); const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome(), capabilities).build();
fuente
Me encontré con el mismo problema con Selenium y Behat. Si desea pasar los parámetros a través
behat.yml
, este es el aspecto que debe tener:fuente
Crear un perfil y luego un controlador nos ayuda a solucionar el problema del certificado en Firefox:
var profile = new FirefoxProfile(); profile.SetPreference("network.automatic-ntlm-auth.trusted-uris","DESIREDURL"); driver = new FirefoxDriver(profile);
fuente
En selenium python, debe establecerlo
desired_capabilities
como:desired_capabilities = { "acceptInsecureCerts": True }
fuente
Para aquellos que tienen este problema usando Firefox y las soluciones anteriores no funcionan, pueden probar el código a continuación (mi respuesta original está aquí ).
from selenium import webdriver profile = webdriver.FirefoxProfile() profile.DEFAULT_PREFERENCES['frozen']['marionette.contentListener'] = True profile.DEFAULT_PREFERENCES['frozen']['network.stricttransportsecurity.preloadlist'] = False profile.DEFAULT_PREFERENCES['frozen']['security.cert_pinning.enforcement_level'] = 0 profile.set_preference('webdriver_assume_untrusted_issuer', False) profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", temp_folder) profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain, image/png") driver = webdriver.Firefox(firefox_profile=profile)
fuente
Elimine todo menos el certificado necesario del almacén de certificados de su navegador y luego configure el navegador para seleccionar automáticamente el certificado cuando solo haya un certificado presente.
fuente
Solo una actualización sobre este tema.
Requerir controladores:
Linux: Centos 7 64bit, Window 7 64bit
Firefox: 52.0.3
Selenium Webdriver: 3.4.0 (Windows), 3.8.1 (Linux Centos)
GeckoDriver: v0.16.0 (Windows), v0.17.0 (Linux Centos)
Código
System.setProperty("webdriver.gecko.driver", "/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver"); ProfilesIni ini = new ProfilesIni(); // Change the profile name to your own. The profile name can // be found under .mozilla folder ~/.mozilla/firefox/profile. // See you profile.ini for the default profile name FirefoxProfile profile = ini.getProfile("default"); DesiredCapabilities cap = new DesiredCapabilities(); cap.setAcceptInsecureCerts(true); FirefoxBinary firefoxBinary = new FirefoxBinary(); GeckoDriverService service =new GeckoDriverService.Builder(firefoxBinary) .usingDriverExecutable(new File("/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver")) .usingAnyFreePort() .usingAnyFreePort() .build(); try { service.start(); } catch (IOException e) { e.printStackTrace(); } FirefoxOptions options = new FirefoxOptions().setBinary(firefoxBinary).setProfile(profile).addCapabilities(cap); driver = new FirefoxDriver(options); driver.get("https://www.google.com"); System.out.println("Life Title -> " + driver.getTitle()); driver.close();
fuente
Pude hacer esto en .net c # con PhantomJSDriver con el controlador web selenium 3.1
[TestMethod] public void headless() { var driverService = PhantomJSDriverService.CreateDefaultService(@"C:\Driver\phantomjs\"); driverService.SuppressInitialDiagnosticInformation = true; driverService.AddArgument("--web-security=no"); driverService.AddArgument("--ignore-ssl-errors=yes"); driver = new PhantomJSDriver(driverService); driver.Navigate().GoToUrl("XXXXXX.aspx"); Thread.Sleep(6000); }
fuente
Cada vez que me encuentro con este problema con los navegadores más nuevos, simplemente uso la edición AppRobotic Personal para hacer clic en coordenadas de pantalla específicas, o tabular los botones y hacer clic.
Básicamente, solo usa su funcionalidad macro, pero no funcionará en configuraciones sin cabeza.
fuente
Yo tuve exactamente el mismo problema. Sin embargo, cuando intenté abrir el sitio web manualmente en el navegador, el certificado era correcto, pero en los detalles el nombre era "DONOTTRUST".
La diferencia de certificado fue causada por Fiddler que se estaba ejecutando en segundo plano y descifrando todo el contenido HTTPS antes de volver a cifrarlo.
Para solucionar mi problema, simplemente cierre Fiddler en la máquina. Si necesita mantener Fiddler abierto, puede desmarcar Descifrar SSL en la configuración de Fiddler.
fuente
WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--ignore-certificate-errors"); driver = new ChromeDriver(options);
Lo he usado para Java con el navegador Chrome, funciona bien
fuente
Parece que todavía no tiene una decisión estándar de este problema. En otras palabras, todavía no puede decir "Está bien, haga una certificación, independientemente de si es Internet Explorer, Mozilla o Google Chrome". Pero encontré una publicación que muestra cómo solucionar el problema en Mozilla Firefox. Si te interesa, puedes consultarlo aquí .
fuente