在远程会话期间调用 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);
}
我在从我的代码调用 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);
}