我目前正在运行具有Zalenium Chrome浏览器的Docker,以并行执行测试。我正在通过Driver.Manage().Logs.GetLog(LogType.Browser);
收集控制台日志,在使用已设置的Zalenium堆栈执行测试套件时,无法收集日志。我没有在Zalenium Docs网站上看到为此设置任何命令。
用于设置节点的Yaml是
version: "3"
services:
zaleniumChrome:
image: dosel/zalenium
container_name: zalenium_chrome
hostname: zalenium
tty: true
ports:
- "4444:4444"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- c:\Automation\Data\Content:/tmp/node/var/Data/Content
command: >
start --videoRecordingEnabled false
--desiredContainers 1
--maxTestSessions 1
--maxDockerSeleniumContainers 10
--sauceLabsEnabled false
--browserStackEnabled false
--testingBotEnabled false
--startTunnel false
--sendAnonymousUsageInfo false
使用ExtentReports以TearDown方法记录和分发测试结果。
var status = TestContext.CurrentContext.Result.Outcome.Status;
Status logstatus = ExtentUtils.GetStatus(status);
ExtentTestManager.GetTest().Log(logstatus, logstatus.ToString());
var stacktrace = string.IsNullOrEmpty(TestContext.CurrentContext.Result.StackTrace)
? "StackTrace:"
: string.Format("StackTrace: {0}", TestContext.CurrentContext.Result.StackTrace);
ExtentTestManager.GetTest().Log(Status.Debug, stacktrace);
ExtentTestManager.GetTest().Log(Status.Debug, "Error Message: " + TestContext.CurrentContext.Result.Message);
//Collect the Javascript Console Log/Errors
var entries = Driver.Manage().Logs.GetLog(LogType.Browser);
foreach (var entry in entries)
{
ExtentTestManager.GetTest().Log(Status.Debug, "JavaScript Log: " + entry.ToString());
}
我为远程连接设置的ChromeOption是:
private RemoteWebDriver GetRemoteDriver()
{
switch (TestContextParams.Browser.ToLower())
{
case "chrome":
var chromeOptions = GetChromeOptions();
chromeOptions.AddAdditionalOption("idleTimeout", "600");
chromeOptions.AddAdditionalOption("zal:name", TestContext.CurrentContext.Test.Name);
var chromeDriver = new RemoteWebDriver(new Uri(GetGridUrl(_appConfig.DockerIP)), chromeOptions.ToCapabilities(), TimeSpan.FromSeconds(180));
return chromeDriver;
case "ie":
var ieDriver = new RemoteWebDriver(new Uri(GetGridUrl(_appConfig.IEGridIP)), GetIEOptions().ToCapabilities(), TimeSpan.FromSeconds(180));
return ieDriver;
default:
throw new ArgumentException("Browser: " + TestContextParams.Browser + " is not valid!");
}
}
private ChromeOptions GetChromeOptions()
{
ChromeOptions chromeOptions = new ChromeOptions
{
PageLoadStrategy = PageLoadStrategy.Normal,
AcceptInsecureCertificates = true
};
chromeOptions.SetLoggingPreference(LogType.Browser, LogLevel.All);
chromeOptions.AddArguments(new List<string>() {
"--incognito",
"no-sandbox",
"--disable-application-cache",
"proxy-server='direct://'",
"proxy-bypass-list=*",
"--disable-dev-shm-usage"
});
switch (TestContextParams.Headless.ToLower())
{
case "true":
chromeOptions.AddArguments(new List<string>() {
"--silent-launch",
"--not-startup-window",
"--headless",
"--window-size=1920,1080",
"--start-maximized",
"--disable-extensions",
"--disable-gpu"
});
return chromeOptions;
case "false":
return chromeOptions;
default:
throw new ArgumentException("Headless parameter is not set properly");
}
}