您的连接不安全 - 使用Selenium.WebDriver v.3.6.0 + Firefox v.56

时间:2017-11-06 09:55:20

标签: c# firefox selenium-webdriver ssl-certificate

我正在使用 Selenium + C#编写测试,我遇到了一个重要问题,因为我在使用安全连接测试网站时找不到解决方案( HTTPS ) 。我在stackoverflow上找到的所有解决方案都已过期或无效。 我尝试从下面的问题中练习所有解决方案: Selenium Why setting acceptuntrustedcertificates to true for firefox driver doesn't work?

但是他们并没有帮我解决问题 也不是使用Nightly FireFox的解决方案。 不过,当selenium加载Firfox浏览器时,我看到页面:“你的连接不安全”。

配置:

  • Firefox v56.0
  • Selenium.Firefox.WebDriver v0.19.0
  • Selenium.WebDriver v3.6.0

我的代码是:

                    FirefoxOptions options = new FirefoxOptions();
                    FirefoxProfile profile = new FirefoxProfile();
                    profile.AcceptUntrustedCertificates = true;
                    profile.AssumeUntrustedCertificateIssuer = false;
                    options.Profile = profile;
                    driver = new FirefoxDriver(FirefoxDriverService.CreateDefaultService() , options , TimeSpan.FromSeconds(5));
                    Drivers.Add(Browsers.Firefox.ToString() , driver);

感谢您的帮助!

我的问题更新:

注1: 对于将我的问题标记为此问题副本的任何人:

Firefox selenium webdriver gives “Insecure Connection” 我认为这是同一个问题,但我需要C#的解决方案,我尝试将您的JAVA代码与我的上述代码相匹配

首先,我将以下声明更改为TRUE:

     profile.AssumeUntrustedCertificateIssuer = true;

第二,我创建了新的FF配置文件(“AutomationTestsProfile”) 并尝试使用它:

尝试1:

       FirefoxProfile profile = new FirefoxProfileManager().GetProfile("AutomationTestsProfile");

尝试2:

       FirefoxProfile profile = new FirefoxProfile("AutomationTestsProfile");

我运行2个选项,但问题仍然存在。

注2: 我附上了我的问题的屏幕截图,当驱动程序尝试在登录页面上输入文本到用户名时出现。

我注意到当我用FF打开我的网站时,Firefox会在地址栏中显示一个带有红色透视红色删除线图标的锁定图标,

但在用户名文本框附近不会出现msg:

“此连接不安全。此处输入的登录信息可能会受到影响。了解详情”(正如您在重复的问题上写的那样),

所以也许有不同的问题?

screenshot: "insecure Connection" tab

3 个答案:

答案 0 :(得分:3)

您正在配置文件中设置属性。 FirefoxOptions有一个属性AcceptInsecureCertificates,将其设置为true。

忘记个人资料,这就是你想要的:

var op = new FirefoxOptions
{
    AcceptInsecureCertificates = true
};

Instance = new FirefoxDriver(op);

答案 1 :(得分:1)

对我来说,配置文件设置AcceptUntrustedCertificates是不够的,我还必须设置选项security.cert_pinning.enforcement_level。我的创业公司看起来像

// no idea why FirefoxWebDriver needs this, but it will throw without
// https://stackoverflow.com/questions/56802715/firefoxwebdriver-no-data-is-available-for-encoding-437
CodePagesEncodingProvider.Instance.GetEncoding(437);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

var service = FirefoxDriverService.CreateDefaultService(Environment.CurrentDirectory);
service.FirefoxBinaryPath = Config.GetConfigurationString("FirefoxBinaryPath"); // path in appsettings

var options = new FirefoxOptions();
options.SetPreference("security.cert_pinning.enforcement_level", 0);
options.SetPreference("security.enterprise_roots.enabled", true);

var profile = new FirefoxProfile()
{
    AcceptUntrustedCertificates = true,
    AssumeUntrustedCertificateIssuer = false,
};
options.Profile = profile;

var driver = new FirefoxDriver(service, options);

答案 2 :(得分:0)

它适用于以下设置(与上面相同):

我的环境:

赢7

firefox 61.0.2(64位)

Selenium C#网络驱动程序:3.14.0

geckodriver-v0.21.0-win32.zip

=============================

FirefoxOptions选项=新的FirefoxOptions();

options.BrowserExecutableLocation = @“ C:\ Program Files \ Mozilla Firefox \ firefox.exe”;

options.AcceptInsecureCertificates = true;

新的FirefoxDriver(RelativePath,options);