Исключение при вызове driver.Manage().Logs.GetLog() во время удаленного сеанса

Я сталкиваюсь с System.NotImplementedException при вызове var entries = driver.Manage().Logs.GetLog(LogType.Browser); из моего кода.

Я настраиваю сеанс удаленного драйвера следующим образом:

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

При более глубоком изучении проблемы я обнаружил противоречивые отчеты, в которых говорится, что привязки C# для метода GetLogs() в веб-драйвере еще не реализованы — см. здесь. Что объяснило бы исключение, которое я получаю.

Но есть также сообщения, которые предполагают, что это должно работать, на этом сайте и в других местах. Например, здесь.

Это тот случай, когда это работает при локальном запуске, но не для удаленных сеансов веб-драйвера?

Может ли кто-нибудь подтвердить раз и навсегда текущий статус этого API на С#, прежде чем я буду рвать на себе волосы? :)

Для справки, я пробовал как с Webdriver 3.01, так и с 2.53.


person Escape17    schedule 08.02.2017    source источник


Ответы (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);
}
person Cosmin    schedule 09.02.2017