2017-02-08 4 views
0

コードからvar entries = driver.Manage().Logs.GetLog(LogType.Browser);を呼び出すときにSystem.NotImplementedExceptionが発生します。次のように私は私のリモートドライバセッションを設定していリモートセッション中にdriver.Manage()を呼び出すときの例外。リモートセッション中のLogs.GetLog()

:webdriverをでC#のGETLOGSのバインディング()メソッドではないことを言って、私はレポートを矛盾見つけた問題に深く見て

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

から実装済み - hereを参照してください。私は例外を説明します。

しかし、このサイトや他の場所でこれがうまくいくはずの投稿もあります。たとえば、here.

ローカルで実行しているがリモートのウェブドライブセッションでは動作しない場合がありますか?

誰も私の髪をもう引っ張る前に、このAPIの現在の状態をC#で一度に確認できますか? :)

私はWebdriver 3.01と2.53の両方で試してみました。

答えて

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); 
}