【问题标题】:How to get browser console error messages using Selenium WebDriver + C#如何使用 Selenium WebDriver + C# 获取浏览器控制台错误消息
【发布时间】:2022-01-17 21:57:35
【问题描述】:

我想用 Selenium WebDriver + C# 收集控制台中出现的所有控制台错误消息。我只想要控制台错误,例如

控制台错误

【问题讨论】:

    标签: c# selenium webdriver


    【解决方案1】:

    按照以下步骤收集浏览器日志,然后将其输出。


    1 - 创建一个收集错误日志的函数
    此函数返回浏览器错误列表。像这样:

        private List<string> GetBrowserError()
        {
            ILogs logs = this.Driver.Manage().Logs;
            var logEntries = logs.GetLog(LogType.Browser); // LogType: Browser, Server, Driver, Client and Profiler
            List<string> errorLogs = logEntries.Where(x => x.Level == LogLevel.Severe).Select(x => x.Message).ToList();
            return errorLogs;
         }
    

    2 - 将日志添加到 TestContext
    像这样:

        private void AddBorwserLogs()
        {
            string errors = "\n \n*** Errors ***\n \n";
            List<string> errorLogs = this.GetBrowserError();
    
            if (errorLogs.Count != 0)
            {
                foreach (var logEntry in errorLogs)
                {
                    errors = errors + $"{logEntry}\n";
                }
    
            // Add errors to TestContext
            TestContext.WriteLine($"{errors}\nNumber of browser errors is: {errorLogs.Count}");
            }
         }
    

    3 - 函数调用
    在测试拆解之前调用AddBorwserLogs() 函数。像这样:

        [TestCleanup]
        public void TeardownTest()
        {
            this.AddBorwserLogs();
            this.Driver.Close();
            this.Driver.Quit();
         }
    

    别忘了初始化 WebDriver
    像这样:

        public IWebDriver Driver;
        public TestContext TestContext { get; set; }
    
        [TestInitialize]
        public void SetupTest()
        {
            ChromeOptions options = new ChromeOptions();
            options.AddArguments("ignore-certificate-errors");
        
            this.Driver = new ChromeDriver(options);
    
            this.Driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 0, 70);
            var url = "https://www.selenium.dev/documentation/";
            this.Driver.Url = url;
        }
    

    【讨论】:

    • 这不适用于 Selenium 3.141.0,您需要升级或降级以避免此行出现空引用异常:logs.GetLog(LogType.Browser)
    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2012-05-30
    • 2012-09-15
    相关资源
    最近更新 更多