Comment désactiver L'avertissement de connexion non fiable de Firefox en utilisant du sélénium?
essaie de trouver un moyen d'empêcher Firefox de lancer un avertissement chaque fois qu'une connexion utilise un certificat "non fiable", avec du sélénium. Je pense que le type de solution qui fonctionnerait le mieux serait de définir une des préférences du navigateur.
Merci beaucoup! Toute suggestion sera appréciée!
12 réponses
vient de trouver ça sur le lien bug de la Fondation Mozilla et ça a marché pour moi.
caps.setCapability("acceptInsecureCerts",true)
j'ai trouvé ce commentaire sur l'activation de cette fonctionnalité dans le sélénium pour Java . Il y a aussi cette question StackOverflow sur le même sujet, aussi pour Java pour Python, qui était ma langue cible désirée, je suis venu avec ceci, en parcourant le FirefoxProfile
code:
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
qui, pour autant que j'ai testé, a produit le comportement attendu.
Espérons que cela aide quelqu'un!
pas besoin de profils personnalisés pour traiter " connexion non fiable "sur WebDriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new FirefoxDriver(capabilities);
du début à la fin avec toutes les garnitures, en C#. Notez que J'avais installé FFv48 dans un répertoire personnalisé car GeckoDriver nécessite cette version spécifique.
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));
aucune des réponses ci-dessus n'a fonctionné pour moi. Je suis à l'aide d': https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip
Firefox 50.1.0
Python 3.5.2
sélénium 3.0.2
Windows 10
Je l'ai résolu juste en utilisant un profil FF personnalisé qui était plus facile à faire que je m'y attendais. Utilisation de cette information https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager sur comment faire un profil personnalisé, j'ai fait ce qui suit: 1) fait un nouveau profil 2) s'est rendu manuellement sur le site en FF pour augmenter l'erreur de certificat non fiable 3) Ajouter une exception pour le site (lorsque l'erreur est soulevée, cliquez sur Avancé, puis ajoutez exception) 4) confirmer l'exception fonctionne en rechargeant le site (vous ne devriez plus avoir l'erreur 5) copier le nouveau profil Créer dans votre projet (pour moi c'est un projet de test de sélénium) 6) référez le nouveau chemin de profil dans votre code
Je n'ai trouvé aucune des lignes suivantes a résolu le problème pour moi:
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
mais en utilisant un profil personnalisé comme mentionné ci-dessus. Voici mon code:
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')
dans mon cas, j'utilisais le conducteur de marionnette au lieu du conducteur de Firefox. Il y a un bogue reconnu ( https://bugzilla.mozilla.org/show_bug.cgi?id=1103196 ) pour elle. En attendant, J'utilise le pilote Firefox à la place:
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 - i.e. don't use Marionette
dc.setCapability(FirefoxDriver.MARIONETTE, false);
Webdriver driver = new FirefoxDriver(dc);
j'ai ajouté ce qui suit et ça a marché pour moi
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
pour moi, en utilisant PHP facebook/webdriver
j'ai créé un profil et j'ai autorisé le certifié. Le nom du profil était selenium
.
ensuite j'initialise mon sélénium 3:
java -jar -Dwebdriver.firefox.profile=selenium selenium-server-standalone-3.0.1.jar
puis dans FirefoxDriver.php
J'ai mis const PROFILE = 'selenium';
ça a marché pour moi.
pour Firefox driver
et Java
ajouter ces lignes:
WebDriver driver;
ProfilesIni profile = new ProfilesIni();
FirefoxProfile testprofile = profile.getProfile("default");
testprofile.setAcceptUntrustedCertificates(true);
testprofile.setAssumeUntrustedCertificateIssuer(true);
driver = new FirefoxDriver(testprofile);
si vous utilisez geckodriver
n'oubliez pas d'ajouter ceci avant l'initialisation du profil:
System.setProperty("webdriver.gecko.driver","<PATH_TO_GECKODRIVER>\geckodriver.exe");
dans Java vous devez utiliser DesiredCapabilities.setAcceptInsecureCerts()
. Pour obtenir un FirefoxDriver avec la capacité et le profil personnalisés faire ce qui suit:
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);
Dans mon cas, ce n'est le truc
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);
ci-dessus solution a fonctionné pour moi sur Firefox 54.0B9 (64 bits). C'est mon code.
- Créez vos capacités
- créer un profil FF avec vos exigences
- ajouter 1. & 2. pour les options de Firefox et le passer à FirefoxDriver
comme ci-dessous
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);