2012-11-03 5 views
18

Czy jest możliwe uzyskanie rejestratora w jakikolwiek sposób, z którego korzysta Selenium WebDriver? Chcę przechwycić listę wszystkich wydanych komend (np .: otwórz, czekaj, kliknij itd.). W szczególności szukam rozwiązania Java, ponieważ eksportuję testy do junit.Jak uzyskać macierzysty rejestrator w Selenium WebDriver

znalazłem ten kod na swojej stronie internetowej, jednak nie wyświetla nic na standardowe wyjście

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

Odpowiedz

33

Włącz rejestrowanie w sterowniku, którego używasz, wybierz typy, które Cię interesują i poziomu log (używam FirefoxDriver, umożliwiając wszystkie rodzaje dzienników i zbierając wszystkie wiadomości dziennika)

zalogować
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); 

Następnie, po uruchomieniu testu możesz zbierać logi (jestem zbieranie logów tylko kierowcy, ale można zrobić to samo dla każdego typu log)

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

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

Jak przechwyciłbym te logi z log4j lub jakimkolwiek innym loggerem? –

+0

@MichelFeldheim Zamiast drukowania "logEntry.getMessage()" do konsoli w powyższym przykładzie, powinieneś wydrukować tę wartość za pomocą log4j logger. –

+0

fajne rozwiązanie dla FF, ale czy masz rozwiązanie dla IE11? – sgrillon

1

Używam log4j do logowania jako utils rejestratorze jest najbardziej najprostszy i prosto do przodu, który, które mogą być wykorzystane (MOIM ZDANIEM).

POM zależności:

<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 są następujące:

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

Wykorzystanie:

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

a potem po prostu używać go jako takie:

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

Mam nadzieję, że to zadziała.

+1

Jesteś ręcznie zalogowaniu 'z rejestratorem .info ("butonCLick"); '. Robię to teraz, ale to jest ból, a także niewiarygodne. Chcę uzyskać natywny rejestrator selenu i zrobić to. – Zombies

3

Spróbuj

driver.manage().logs() 

Dostaniesz Logs interfejs, który ma sposoby, aby dzienniki i typy dzienników. Zobacz Logs interface docs