2012-11-03 13 views
18

Selenium WebDriverが使用するロガーは何とか入手できますか?私は発行されたすべてのコマンドのトランスクリプトをキャプチャしたい(例えば、オープン、待機、クリックなど)。特に私はjunitにテストをエクスポートしているので、私はJavaソリューションを探しています。Selenium WebDriverでネイティブロガーを取得する方法

私はしかし、それはutilsのロガーを使用することができ、最も簡単かつ単純ですと、私はロギング用にlog4jを使用していて、標準

DesiredCapabilities caps = DesiredCapabilities.firefox(); 
    LoggingPreferences logs = new LoggingPreferences(); 
    logs.enable(LogType.DRIVER, Level.FINEST); 
    caps.setCapability(CapabilityType.LOGGING_PREFS, logs); 
    driver = new FirefoxDriver(caps); 

答えて

33

、あなたが使用しているドライバでロギングを有効にし、あなたが興味を持っているタイプをどのログを選択し、ログレベル(私は、FirefoxDriverを使用して、ログのすべてのタイプを有効にすると、すべてのログメッセージを収集しています)

を参照してください。その後
LoggingPreferences logs = new LoggingPreferences(); 
logs.enable(LogType.BROWSER, Level.ALL); 
logs.enable(LogType.CLIENT, Level.ALL); 
logs.enable(LogType.DRIVER, Level.ALL); 
logs.enable(LogType.PERFORMANCE, Level.ALL); 
logs.enable(LogType.PROFILER, Level.ALL); 
logs.enable(LogType.SERVER, Level.ALL); 

DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox(); 
desiredCapabilities.setCapability(CapabilityType.LOGGING_PREFS, logs); 

WebDriver driver = new FirefoxDriver(desiredCapabilities); 

、テストを実行した後、あなたがログを収集することができます(私はドライバーのみのログを収集していますが、あなたは、ログのいずれかのタイプに同じことを行うことができます)

Logs logs = driver.manage().logs(); 
LogEntries logEntries = logs.get(LogType.DRIVER); 

for (LogEntry logEntry : logEntries) { 
    System.out.println(logEntry.getMessage()); 
} 
+0

log4jやその他のロガーでどのようにログをキャプチャしますか? –

+0

@MichelFeldheim上記の例のコンソールに "logEntry.getMessage()"を出力するのではなく、log4j loggerを使用してその値を出力する必要があります。 –

+0

FF向けの素晴らしいソリューションですが、IE11のソリューションはありますか? – sgrillon

1

に何も表示されません、彼らのウェブサイトにこのコードを見つけました(私見では)。

POMの依存関係:

<dependency> 
      <groupId> org.apache.cassandra</groupId> 
      <artifactId>cassandra-all</artifactId> 
      <version>0.8.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jul-to-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>log4j-over-slf4j</artifactId> 
      <version>1.6.6</version> 
      <scope>runtime</scope> 
     </dependency> 

輸入は以下の通りである:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

使用:

private static Logger log = LoggerFactory.getLogger(classname.class); 

、次にちょうどそのように使用する:

logger.info ("butonCLick"); 
driver.findElement(By.id("blablabla")).click(); 

これはあなたのために働くことを望みます。

+1

手動ロガー 'でログインしています.info( "butonCLick"); '。私は今もそうしていますが、それは痛みであり、信頼性もありません。私はネイティブのセレンロガーを取得し、これを行うには。 – Zombies

3

あなたはログを取得し、タイプをログに記録する方法を持っているログのインターフェイスを取得します

driver.manage().logs() 

を試してみてください。 Logs interface docs

関連する問題