2012-11-03 61 views
18

Selenium WebDriver能夠以某種方式獲取記錄器嗎?我想捕獲所有發佈的命令的抄本(例如:打開,等待,點擊等)。特別是我正在尋找一個java解決方案,因爲我正在將測試導出到junit中。如何在Selenium WebDriver中獲取本地記錄器

,我發現他們的網站上的代碼,但它顯示在標準

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記錄器打印該值。 –

+0

FF的很好的解決方案,但你有一個IE11的解決方案? – sgrillon

1

我使用log4j的記錄作爲utils的記錄是,可以使用了最簡單和直接的一個什麼(恕我直言)。

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

相關問題