我正在使用 Selenium + C#编写测试,我遇到了一个重要问题,因为我在使用安全连接测试网站时找不到解决方案( HTTPS ) 。我在stackoverflow上找到的所有解决方案都已过期或无效。 我尝试从下面的问题中练习所有解决方案: Selenium Why setting acceptuntrustedcertificates to true for firefox driver doesn't work?
但是他们并没有帮我解决问题 也不是使用Nightly FireFox的解决方案。 不过,当selenium加载Firfox浏览器时,我看到页面:“你的连接不安全”。配置:
我的代码是:
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:
“此连接不安全。此处输入的登录信息可能会受到影响。了解详情”(正如您在重复的问题上写的那样),
所以也许有不同的问题?
答案 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);