我有一些用C#编写的自动化硒测试,我正尝试在Microsoft Edge浏览器的CI(Azure DevOps)中启动它们。我已经安装了NuGet Package Selenium.WebDriver.MicrosoftWebDriver - Version 10.0.17134
文件夹中的Edge WebDriver bin\Debug\netcoreapp3.1
。座席规范为vs2017-win2016
。但是,对于Chrome
和FireFox
浏览器来说一切正常,测试运行顺利。
这里是DriverBuilder
类
public static class DriverBuilder
{
private static readonly string PathToDriverBinary =
DirectoryHelper.TryGetSolutionDirectoryInfo() + @"\MyProject\bin\Debug\netcoreapp3.1";
public static IWebDriver GetDriver()
{
var browser = ConfigManager.browser;
var options = DriverOptionsManager.GetDriverOptions();
var wait = TimeSpan.FromSeconds(ConfigManager.Wait);
switch (browser)
{
case browserType.Chrome:
var chromeDriver = new ChromeDriver(PathToDriverBinary,options as ChromeOptions);
chromeDriver.Manage().Timeouts().ImplicitWait = wait;
return chromeDriver;
case browserType.Firefox:
var ffdriver = new FirefoxDriver(PathToDriverBinary,options as FirefoxOptions,TimeSpan.FromSeconds(150));
ffdriver.Manage().Timeouts().ImplicitWait = wait;
ffdriver.Manage().Window.Maximize();
return ffdriver;
case browserType.MicrosoftEdge:
var microsoftEdgeDriver = new EdgeDriver(PathToDriverBinary,options as EdgeOptions,TimeSpan.FromSeconds(150));
microsoftEdgeDriver.Manage().Timeouts().ImplicitWait = wait;
microsoftEdgeDriver.Manage().Window.Maximize();
return microsoftEdgeDriver;
default:
throw new Exception($"Driver type not found in configuration. Actual browser type: {browser}");
}
}
}
这是DriverOptionsManager
类:
public static class DriverOptionsManager
{
public static DriverOptions GetDriverOptions()
{
var options = ConfigManager.browser switch
{
browserType.Chrome => (DriverOptions) ChromeOptions(),browserType.Firefox => FirefoxOptions(),browserType.MicrosoftEdge => EdgeOptions(),_ => throw new Exception("browsers type chosen incorrect or not chosen")
};
return options;
}
private static ChromeOptions ChromeOptions()
{
var chromeOptions = new ChromeOptions();
chromeOptions.AddUserProfilePreference("intl.accept_languages","en-Gb");
chromeOptions.browserVersion = "85.0";
chromeOptions.AddArgument("--ignore-certificate-errors");
chromeOptions.AddArgument("--start-maximized");
chromeOptions.AddArgument("--enable-features=NetworkService,NetworkServiceInProcess");
chromeOptions.AddAdditionalCapability("enableVNC",true,true);
chromeOptions.AddAdditionalCapability("enableVideo",true);
chromeOptions.AddAdditionalCapability("videoName",$"{TestContext.CurrentContext.Test.Name}.mp4",true);
chromeOptions.AddAdditionalCapability("videoCodec","mpeg4",true);
return chromeOptions;
}
private static FirefoxOptions FirefoxOptions()
{
var firefoxOptions = new FirefoxOptions();
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
firefoxOptions.AddAdditionalCapability("enableVNC",true);
firefoxOptions.AddAdditionalCapability("enableVideo",true);
firefoxOptions.AddAdditionalCapability("videoName",true);
firefoxOptions.Profile = new FirefoxProfile();
firefoxOptions.Profile.SetPreference("intl.accept_languages","en-GB");
return firefoxOptions;
}
private static EdgeOptions EdgeOptions()
{
var edgeOptions = new EdgeOptions();
edgeOptions.AddAdditionalCapability("intl.accept_languages","en-Gb");
edgeOptions.PageLoadStrategy = PageLoadStrategy.None;
return edgeOptions;
}
}
但是在azure代理上为Edge浏览器运行硒测试时,我仍然收到以下错误:
2020-09-15T12:17:38.3233809Z No connection Could be made because the target machine actively refused it. No connection Could be made because the target machine actively refused it.
2020-09-15T12:17:38.3234893Z -> #14: error: Cannot start the driver service on http://localhost:49756/