it-roy-ru.com

Как отключить предупреждение о ненадежном подключении Firefox с помощью Selenium?

Попытка найти способ отключить Firefox от выдачи предупреждения каждый раз, когда соединение использует «недоверенный» сертификат с Selenium. Я считаю, что наилучшим решением будет установить один из параметров браузера.

Спасибо большое! Любые предложения будут оценены!

18
Juan Carlos Coto

Я нашел этот комментарий о включении этой функции в Selenium для Java . Существует также этот вопрос StackOverflow об этой же проблеме, также для Java Для Python, который был моим желаемым целевым языком, я придумал это, просматривая код FirefoxProfile:

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

Который, насколько я проверял, дал ожидаемое поведение.

Надеюсь, это кому-нибудь поможет!

7
Juan Carlos Coto

Просто нашел это по ссылке на ошибку в Mozilla Foundation, и это сработало для меня.

caps.setCapability("acceptInsecureCerts",true)
16
Dominic Giallombardo

Нет необходимости в пользовательских профилях для работы с " Ненадежное соединение " в WebDriver

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

Ни один из приведенных выше ответов не помог мне. Я использую: https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.Zip

Firefox 50.1.0

Python 3.5.2

Селен 3.0.2

Windows 10

Я решил это, просто используя собственный профиль FF, который был проще, чем я ожидал. Используя эту информацию https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager о том, как сделать пользовательский профиль, я сделал следующее: 1) сделал новый профиль 2) Вручную зашел на сайт в FF, чтобы вызвать ошибку недоверенного сертификата 3) Добавить исключение сайта (при возникновении ошибки нажмите дополнительно, а затем добавьте исключение) 4) подтвердите работу исключения, перезагрузив сайт (вы больше не должны получать ошибку 5) Скопируйте вновь созданный профиль в ваш проект (для меня это проект тестирования Selenium) 6) Ссылка на новый путь к профилю в вашем коде

Я не нашел ни одной из следующих строк, чтобы решить проблему для меня:

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

Но использование пользовательского профиля, как упомянуто выше, сделало . Вот мой код:

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')
3
Roochiedoor

От начала до конца со всеми отделками в C #. Обратите внимание, что я установил FFv48 в пользовательский каталог, потому что GeckoDriver требует именно эту версию.

    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));
3
redwards510

Я добавил ниже, и тогда это сработало для меня 

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

В моем случае я использовал драйвер Marionette вместо драйвера Firefox. Существует признанная ошибка ( https://bugzilla.mozilla.org/show_bug.cgi?id=1103196 ) для этого. В то же время я использую драйвер Firefox вместо:

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);
2
Ondrej Svejdar

В моем случае это помогло

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);
1
riccardo.tasso

В Java вы должны использовать DesiredCapabilities.setAcceptInsecureCerts(). Чтобы получить FirefoxDriver с пользовательскими возможностями и профилем, сделайте следующее:

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);
1
Francois Bourgeois

Для меня с помощью PHP facebook/webdriver я настроил создание профиля и авторизовал сертифицированный. Название профиля было Selenium.

Затем я инициализирую свой Selenium 3:

Java -jar -Dwebdriver.firefox.profile=Selenium selenium-server-standalone-3.0.1.jar

Затем в FirefoxDriver.php Я установил const PROFILE = 'Selenium';

Это сработало для меня.

1
Rafael Guimarães

Для Firefox driver и Java добавьте эти строки:

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

Если вы используете geckodriver, не забудьте добавить это до инициализации профиля:

System.setProperty("webdriver.gecko.driver","<PATH_TO_GECKODRIVER>\\geckodriver.exe");
1
Vas Giatilis

Вышеупомянутое решение работало для меня на Firefox 54.0b9 (64-bit). Это мой код.

  1. Создайте свои возможности
  2. Создать профиль FF с вашими требованиями
  3. Добавьте 1. и 2. в Параметры Firefox и передайте его в FirefoxDriver

Как ниже

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);       
0
Vishwanath

Эта конфигурация работает для меня в PHP

public function setUp()
{
    $this->setHost('localhost');
    $this->setPort(4444);
    $this->setBrowserUrl('https://example.loc');
    $this->setBrowser('firefox');
    $this->setDesiredCapabilities(["acceptInsecureCerts" => true]);
}

Для Firefox я бегу

Java -jar Selenium-server-standalone-3.8.1.jar -enablePassThrough false
0
pevac