从我的代码中调用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的记录。
答案 0 :(得分:0)
我遇到了同样的问题,似乎只为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);
}