Zalenium获取Chrome浏览器控制台日志

时间:2020-01-07 17:00:35

标签: c# zalenium

我目前正在运行具有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");
            }
        }

0 个答案:

没有答案