当前位置: 首页 > 知识库问答 >
问题:

如何使用Selenium WebDriver C#获取浏览器控制台错误消息

阚吕恭
2023-03-14

我想用Selenium WebDriver C#收集控制台中出现的所有控制台错误消息。我只想要像这样的控制台错误

共有1个答案

宗沛
2023-03-14

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

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;
    }
 类似资料:
  • 测试运行后,我想收集控制台中显示的所有控制台错误消息(打开Firebug)- 我尝试了这里提到的答案,但它只显示“警告”、“信息”的消息,而不显示“错误”的消息 我只想要控制台错误,比如- 谁能帮我弄到那些控制台日志吗?

  • 控制台错误png我们一直试图通过使用以下代码打印特定网站的控制台错误。但是我们无法捕捉控制台错误。有人能给出快速响应吗 代码行: 错误: 代码行: 错误: 代码块:

  • 在Selenium Webdriver for Javascript/NodeJS中,如何获取

  • 问题内容: 为了进行快速验证,我在开发过程中已在浏览器控制台中测试了AngularJS服务。我注入到服务控制台的方法是在为说明这个问题,或 这与AngularJS 1.0.7完美配合。但是,升级到1.1.5之后,对于使用service的服务将不再起作用,不会发送xhr。 我已经测试过直接注射,它也不起作用。AngularJS changelog似乎没有关于此问题的记录。我可以知道这是什么问题吗?

  • 问题内容: 我正在使用量角器来测试AngularJS 我想检查在测试结束时是否未发生未捕获的异常,并将它们打印到浏览器控制台。 有没有简单的方法可以做到这一点? 问题答案: 如果您将量角器与Jasmine一起使用,请使用以下代码: 如果没有控制台错误,这将通过测试用例。如果有任何控制台错误,则测试将失败。 有关如何访问浏览器控制台内容的说明, 可以 在常见问题解答的“ 如何获取浏览器控制台” 部分

  • 问题内容: 我试图找出如何抑制应用程序中的http请求和响应错误,例如,当对服务器提出错误请求时,我不希望该 错误记录到浏览器控制台中。我尝试覆盖$exceptionHandler,但是该逻辑适用于除HTTP 错误以外的所有异常,这些异常仍记录在浏览器中。我还创建了HTTP拦截器,但是全局400 Bad Request错误出现在我放入我的逻辑之前 : 那也没有抑制错误,有什么想法吗? EDIT 问