Essayer de trouver un moyen d'empêcher Firefox de générer un avertissement chaque fois qu'une connexion utilise un certificat "non approuvé", avec Selenium. Je pense que le type de solution qui fonctionnerait le mieux serait de définir l’une des préférences du navigateur.
Merci beaucoup! Toute suggestion sera appréciée!
J'ai trouvé ce commentaire sur l'activation de cette fonctionnalité dans Selenium pour Java . Il y a aussi cette question de StackOverflow sur le même problème, également pour Java Pour Python, qui était la langue cible souhaitée, je l’ai trouvée en parcourant le code FirefoxProfile
:
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
Qui, dans la mesure où j'ai testé, a produit le comportement attendu.
J'espère que cela aide quelqu'un!
Je viens de trouver cela à partir du lien de bogue de la fondation Mozilla et cela a fonctionné pour moi.
caps.setCapability("acceptInsecureCerts",true)
Pas besoin de profils personnalisés pour traiter " Connexion non sécurisée " sur WebDriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new FirefoxDriver(capabilities);
Aucune des réponses ci-dessus n'a fonctionné pour moi. J'utilise: 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 simplement en utilisant un profil FF personnalisé, ce qui était plus facile à faire que prévu. Utilisation de cette information https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager sur la création d'une personnalisation profil, j’ai fait ce qui suit: 1) Créer un nouveau profil 2) Se rendre manuellement sur le site en FF pour générer l’erreur de certificat non approuvée 3) Ajouter une exception de site (lorsque l’erreur est générée, cliquez sur 4) confirmez le fonctionnement de l'exception en rechargeant le site (vous ne devriez plus recevoir l'erreur 5) copiez le profil nouvellement créé dans votre projet (pour moi, il s'agit d'un projet de test Selenium) 6) Référencez le nouveau chemin de profil dans votre code
Je n'ai trouvé aucune des lignes suivantes 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 a fait . 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')
Du début à la fin avec tous les accompagnements, 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));
J'ai ajouté le ci-dessous et puis cela a fonctionné pour moi
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
Dans mon cas, j'utilisais le pilote Marionette au lieu du pilote Firefox. Il existe un bogue reconnu ( https://bugzilla.mozilla.org/show_bug.cgi?id=1103196 ). 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);
Dans mon cas, cela a fait l'affaire
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);
Dans Java vous devez utiliser DesiredCapabilities.setAcceptInsecureCerts()
. Pour obtenir un pilote Firefox avec une fonctionnalité et un profil personnalisés, procédez comme 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);
Pour moi, en utilisant PHP facebook/webdriver
j'ai créé un profil et 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
.__, je mets const PROFILE = 'Selenium';
Cela a fonctionné pour moi.
Pour Firefox driver
et Java
, ajoutez 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");
La solution ci-dessus a fonctionné pour moi sur Firefox 54.0b9 (64 bits). Ceci est mon code.
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);
Cette configuration fonctionne pour moi en PHP
public function setUp()
{
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowserUrl('https://example.loc');
$this->setBrowser('firefox');
$this->setDesiredCapabilities(["acceptInsecureCerts" => true]);
}
Pour Firefox, je cours
Java -jar Selenium-server-standalone-3.8.1.jar -enablePassThrough false