在远程会话期间调用 driver.Manage().Logs.GetLog() 时出现异常

Exception when calling driver.Manage().Logs.GetLog() during remote session

我在从我的代码调用 var entries = driver.Manage().Logs.GetLog(LogType.Browser); 时遇到了 System.NotImplementedException。

我正在按如下方式设置我的远程驱动程序会话:

(...)
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.SetLoggingPreference(LogType.Browser, LogLevel.All);
webDriver = new RemoteWebDriver(new Uri(remoteServerUrl),chromeOptions.ToCapabilities());
(...)

通过更深入地研究问题,我发现了相互矛盾的报告,这些报告称 webdriver 中 GetLogs() 方法的 C# 绑定尚未实现 - 请参阅 here。这可以解释我得到的异常。

但是在本网站和其他地方也有一些帖子表明这应该有效。例如here.

当 运行 在本地而不是远程 webdriver 会话时,这是否有效?

在我拔掉我的头发之前,任何人都可以在 C# 中一劳永逸地确认这个 API 的当前状态吗? :)

郑重声明,我已尝试使用 Webdriver 3.01 和 2.53。

我遇到了同样的问题,似乎完整的日志集只为 FirefoxDriver 实现(虽然我不确定这是否仍然适用于 Geckodriver 版本)。

因此,为了拥有可用于所有浏览器的包装器,我创建了以下实用方法:

//can also be used in the class constructor 
_logs = driver.Manage().Logs;

public void PrintLogs(string logType)
{
    try
    {
        var browserLogs = _logs.GetLog(logType);
        if (browserLogs.Count > 0)
        {                           
            foreach (var log in browserLogs)
            {
                //log the message in a file
            }
        }
    }
    catch
    {
        //There are no log types present
    }
}

public void PrintAllLogs()
{
    PrintLogs(LogType.Server);
    PrintLogs(LogType.Browser);
    PrintLogs(LogType.Client);
    PrintLogs(LogType.Driver);
    PrintLogs(LogType.Profiler);
}