Come disabilitare l’avviso di connessione non attendibile di Firefox utilizzando Selenium?

Cercando di trovare un modo per disabilitare Firefox dal generare un avviso ogni volta che una connessione utilizza un certificato “non attendibile”, con Selenium. Credo che il tipo di soluzione che avrebbe funzionato al meglio sarebbe stato quello di impostare una delle preferenze del browser.

Grazie mille! Ogni suggerimento sarà apprezzato!

Ho appena trovato questo dal link del bug di Mozilla Foundation e ha funzionato per me.

caps.setCapability("acceptInsecureCerts",true) 

Ho trovato questo commento sull’triggerszione di questa funzionalità in Selenium per Java . C’è anche questa domanda StackOverflow sullo stesso problema, anche per Java per Python, che era la lingua di destinazione che desideravo, mi è venuta in mente, sfogliando il codice FirefoxProfile :

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

Che, per quanto ho provato, ha prodotto il comportamento atteso.

Spero che questo aiuti qualcuno!

Non c’è bisogno di profili personalizzati per gestire ” Connessione non sicura ” su WebDriver

 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); driver = new FirefoxDriver(capabilities); 

Dall’inizio alla fine con tutti i dettagli, in C #. Si noti che avevo installato FFv48 in una directory personalizzata perché GeckoDriver richiede quella versione specifica.

  var ffOptions = new FirefoxOptions(); ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox48\firefox.exe"; ffOptions.LogLevel = FirefoxDriverLogLevel.Default; ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true }; var service = FirefoxDriverService.CreateDefaultService(ffPath, "geckodriver.exe"); var Browser = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120)); 

Nessuna delle risposte di cui sopra ha funzionato per me. Sto usando: https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Selenio 3.0.2

Windows 10

L’ho risolto solo utilizzando un profilo FF personalizzato che era più facile da fare di quanto mi aspettassi. Utilizzando queste informazioni https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager su come creare un profilo personalizzato, l’ho fatto il seguente: 1) Creato un nuovo profilo 2) Passato manualmente al sito in FF per aumentare l’errore del certificato non attendibile 3) Aggiungi un’eccezione del sito (quando l’errore viene generato fai clic su Avanzato e quindi aggiungi eccezione) 4) conferma l’eccezione funziona ricaricare il sito (non dovresti più ricevere l’errore 5) Copiare il profilo appena creato nel tuo progetto (per me è un progetto di test sul selenium) 6) Fare riferimento al nuovo percorso del profilo nel tuo codice

Non ho trovato nessuna delle seguenti righe risolto il problema per me:

 firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['handleAlerts'] = True firefox_capabilities['acceptSslCerts'] = True firefox_capabilities['acceptInsecureCerts'] = True profile = webdriver.FirefoxProfile() profile.set_preference('network.http.use-cache', False) profile.accept_untrusted_certs = True 

Ma usando un profilo personalizzato come accennato in precedenza. Ecco il mio codice:

 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = True #In the next line I'm using a specific FireFox profile because # I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver # I create a FireFox profile where I had already made an exception for the site I'm testing # see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile' profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath) geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe' browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath) browser.get('http://stackoverflow.com') 

Nel mio caso stavo usando il driver Marionette invece del driver di Firefox. C’è un bug riconosciuto ( https://bugzilla.mozilla.org/show_bug.cgi?id=1103196 ) per questo. Nel frattempo sto usando il driver di Firefox invece:

 DesiredCapabilities dc = DesiredCapabilities.firefox(); dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); FirefoxProfile profile = new FirefoxProfile(); profile.setAcceptUntrustedCertificates(true); dc.setCapability(FirefoxDriver.PROFILE, profile); // this is the important line - ie don't use Marionette dc.setCapability(FirefoxDriver.MARIONETTE, false); Webdriver driver = new FirefoxDriver(dc); 

Ho aggiunto il sotto e poi ha funzionato per me

 DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setAcceptInsecureCerts(true); WebDriver driver = new FirefoxDriver(desiredCapabilities); 

Per me, utilizzando PHP facebook/webdriver ho impostato creare un profilo e autorizzato il certificato. Il nome del profilo era selenium .

Successivamente inizializzo il mio selenium 3:

 java -jar -Dwebdriver.firefox.profile=selenium selenium-server-standalone-3.0.1.jar 

Quindi in FirefoxDriver.php ho impostato const PROFILE = 'selenium';

Questo ha funzionato per me.

Per il Firefox driver e Java aggiungi queste righe:

 WebDriver driver; ProfilesIni profile = new ProfilesIni(); FirefoxProfile testprofile = profile.getProfile("default"); testprofile.setAcceptUntrustedCertificates(true); testprofile.setAssumeUntrustedCertificateIssuer(true); driver = new FirefoxDriver(testprofile); 

Se si utilizza geckodriver , non dimenticare di aggiungere questo prima dell’inizializzazione del profilo:

 System.setProperty("webdriver.gecko.driver","\\geckodriver.exe"); 

In Java è necessario utilizzare DesiredCapabilities.setAcceptInsecureCerts() . Per ottenere un FirefoxDriver con funzionalità e profilo personalizzati, procedi come segue:

 DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setAcceptInsecureCerts(true); FirefoxProfile profile = new FirefoxProfile(); profile.set*... FirefoxOptions options = new FirefoxOptions(); options.addCapabilities(capabilities); options.setProfile(profile); new FirefoxDriver(options); 

La soluzione di cui sopra ha funzionato per me su Firefox 54.0b9 (64-bit). Questo è il mio codice

  1. Crea le tue capacità
  2. Crea un profilo FF con i tuoi requisiti
  3. Aggiungi 1. e 2. a Opzioni di Firefox e passalo a FirefoxDriver

Come sotto

 capabilities = new DesiredCapabilities().firefox(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); //Accept Untrusted connection and to download files FirefoxProfile profile = new FirefoxProfile(); profile.setAcceptUntrustedCertificates(true); profile.setAssumeUntrustedCertificateIssuer(false); profile.setPreference("dom.file.createInChild", true); profile.setPreference("browser.download.folderList", 1); profile.setPreference("browser.helperApps.alwaysAsk.force", false); profile.setPreference("browser.download.manager.showWhenStarting" ,false); profile.setPreference("pdfjs.disabled", true ); profile.setPreference("browser.helperApps.neverAsk.saveToDisk" ,"application/pdf;image/jpg;image/jpeg;text/html;text/plain;application/zip;application/download"); System.setProperty("webdriver.gecko.driver", config.getGeckoDriver()); capabilities.setCapability(FirefoxDriver.PROFILE, profile); FirefoxOptions options = new FirefoxOptions(); options.addCapabilities(capabilities); options.setProfile(profile); driver=new FirefoxDriver(options); 

Nel mio caso questo ha fatto il trucco

 FirefoxOptions options = new FirefoxOptions(); options.addCapabilities(new ImmutableCapabilities(ImmutableMap.of( CapabilityType.ACCEPT_SSL_CERTS, true, CapabilityType.ACCEPT_INSECURE_CERTS, true))); WebDriver driver = new FirefoxDriver(options);