Как отключить предупреждение о ненадежном подключении Firefox с помощью Selenium?
Попытка найти способ отключить Firefox от предупреждения о предупреждении каждый раз, когда соединение использует "ненадежный" сертификат с Selenium. Я считаю, что решение, которое будет работать лучше всего, - это установить одну из настроек браузера.
Большое спасибо! Любые предложения будут оценены!
Ответы
Ответ 1
Я нашел этот комментарий о включении этой функции в Selenium для Java. Существует также fooobar.com/questions/377845/.... Для Python, который был моим целевым языком, я придумал это, просмотрев FirefoxProfile
код:
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
Что, насколько я проверял, вызвало ожидаемое поведение.
Надеюсь, это поможет кому-то!
Ответ 2
Просто нашел это из ссылки на ошибку Mozilla Foundation, и это сработало для меня.
caps.setCapability("acceptInsecureCerts",true)
Ответ 3
Нет необходимости настраивать профили для работы с ненадежным подключением "в WebDriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new FirefoxDriver(capabilities);
Ответ 4
От начала до конца со всеми обрезками, на С#. Обратите внимание, что я установил 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));
Ответ 5
Ни один из вышеперечисленных ответов не работал у меня. Я использую:
https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip
Firefox 50.1.0
Python 3.5.2
Selenium 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) Скопируйте новый профиль в свой проект (для меня это проект тестирования селена)
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')
Ответ 6
В моем случае я использовал драйвер 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);
Ответ 7
Я добавил ниже, а затем он работал у меня
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
Ответ 8
Для 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");
Ответ 9
Для меня, используя PHP facebook/webdriver
, я установил создание профиля и разрешил сертифицированный. Имя профиля было selenium
.
Затем я инициализирую свой селен 3:
java -jar -Dwebdriver.firefox.profile=selenium selenium-server-standalone-3.0.1.jar
Тогда в FirefoxDriver.php
Я установил const PROFILE = 'selenium';
Это сработало для меня.
Ответ 10
В 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);
Ответ 11
В моем случае это помогло
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);
Ответ 12
Выше решение работало для меня на Firefox 54.0b9 (64-разрядная версия). Это мой код.
- Создайте свои возможности.
- Создайте профиль FF с вашими требованиями
- Добавьте параметры 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);
Ответ 13
Эта конфигурация работает для меня в 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
Ответ 14
С#: что-то изменилось, поскольку у параметров теперь есть собственный атрибут для этого.
var ffOptions = new FirefoxOptions();
ffOptions.AcceptInsecureCertificates = true;
Driver = new FirefoxDriver(ffOptions);
Надеюсь, это поможет.