【问题标题】:Exception when calling driver.Manage().Logs.GetLog() during remote session在远程会话期间调用 driver.Manage().Logs.GetLog() 时出现异常
【发布时间】:2017-02-08 15:24:55
【问题描述】:

从我的代码中调用 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。

【问题讨论】:

    标签: c# selenium-webdriver webdriver remotewebdriver


    【解决方案1】:

    我遇到了同样的问题,而且似乎只为 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2023-03-27
      • 2017-10-16
      • 2021-11-03
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多