24

试图找到一种方法来禁用 Firefox 在每次连接使用“不受信任”证书时发出警告,使用 Selenium。我相信最有效的解决方案是设置浏览器首选项之一。

4

16 回答 16

20

刚刚从 Mozilla Foundation 错误链接中找到了这个,它对我有用。

caps.setCapability("acceptInsecureCerts",true)
于 2017-04-03T15:28:54.053 回答
11

在 Selenium for Java 中找到了关于启用此功能的评论。还有关于同一问题的这个 StackOverflow 问题,也适用于 JavaFirefoxProfile For Python,这是我想要的目标语言,我通过浏览代码 想出了这个:

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

据我测试,这已经产生了预期的行为。

希望这对某人有帮助!

于 2013-06-02T06:13:20.103 回答
5

无需自定义配置文件来处理WebDriver 上的“不受信任的连接”

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new FirefoxDriver(capabilities);
于 2013-10-17T05:14:43.883 回答
5

以上答案都不适合我。我正在使用: https ://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

火狐 50.1.0

Python 3.5.2

硒 3.0.2

视窗 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')
于 2017-01-06T15:02:54.633 回答
4

从头到尾所有的装饰,在 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));
于 2016-11-04T21:10:39.327 回答
3

就我而言,我使用的是 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);
于 2016-11-24T14:30:41.993 回答
2

我添加了以下内容,然后它对我有用

DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setAcceptInsecureCerts(true);
WebDriver driver = new FirefoxDriver(desiredCapabilities);
于 2017-06-09T11:14:14.487 回答
2

C#:有些东西发生了变化,因为选项现在有自己的属性。

var ffOptions = new FirefoxOptions();
ffOptions.AcceptInsecureCertificates = true;
Driver = new FirefoxDriver(ffOptions);

希望这可以帮助。

于 2019-10-17T07:35:36.337 回答
1

对于Firefox driverJava添加这些行:

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");
于 2017-01-10T17:23:33.480 回答
1

对我来说,我使用 PHPfacebook/webdriver创建一个配置文件并授权认证。配置文件的名称是selenium

接下来我初始化我的 selenium 3:

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

然后在FirefoxDriver.php 我设置const PROFILE = 'selenium';

这对我有用。

于 2017-01-18T09:19:16.097 回答
1

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);
于 2017-09-18T11:38:04.700 回答
1

就我而言,这成功了

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);
于 2018-09-04T15:11:10.297 回答
0

上述解决方案适用于 Firefox 54.0b9(64 位)。这是我的代码。

  1. 创造你的能力
  2. 根据您的要求创建 FF 配置文件
  3. 将 1. & 2. 添加到 Firefox Options 并将其传递给 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);       
于 2017-12-13T07:08:08.880 回答
0

此配置在 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
于 2018-12-20T16:58:30.057 回答
0

我在使用 Node JS 和 Selenium 时遇到了这个问题。到处搜索,但找不到任何东西。

终于明白了。也许这会对某人有所帮助。

var webdriver = require('selenium-webdriver');
driver = new webdriver.Builder()
.withCapabilities({'browserName': 'firefox', acceptSslCerts: true, acceptInsecureCerts: true})
.build()
于 2019-12-09T18:34:15.950 回答
0

对于 PHP,请使用以下代码

$serverUrl = 'http://localhost:4444/wd/hub';
$capabilities = new DesiredCapabilities(
    [
        'browserName' => 'firefox',
        'proxy' => [
            'proxyType' => 'manual',
            'httpProxy' => 'localhost:0000',
            'sslProxy' => 'localhost:XXXX',
            
        ],
    ]
);

$capabilities->setCapability('acceptInsecureCerts',True);
    $driver = RemoteWebDriver::create($serverUrl, $capabilities,60*1000,60*1000);
于 2021-10-08T07:21:25.940 回答