Sometimes the usual test log and screenshot is not enough to find the reason of the failed test case. Especially when the test case occasionally fails in special circumstances and it is really hard to reproduce. For this reason, we need to collect for each fail as much information as possible. One possible source of information is the console output of the browser.

First we need to set which type of logs we want to track with Selenium’s WebDriver. The possible log types are located in class LogType. Create an instance of LoggingPreferences and enable desired log types to keep tracking of them. Create a DesiredCapability object and set LOGGING_PREFS capability to use the already created LoggingPreferences. Once you applied the DesiredCapability on the instance of WebDriver, you are ready to go.

Short code example:

		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);		
		dc.setCapability(CapabilityType.LOGGING_PREFS, logs);
		driver = new ChromeDriver(dc);

During the test case execution you can access any time to the console log by calling:

Logs logs = getDriver().manage().logs();

To print the captured logs you need to iterate through all of them and use any kind of Logger or simply use System.out.println(). You can also write it to an external file. Here is a little example, how you can print out the captured logs using slf4j Logger.

	LogEntries logEntries = logs.get(logType);
	if (!logEntries.getAll().isEmpty()){
		logger.debug("Console output from browser:" );
		for (LogEntry logEntry : logEntries) {
		   logger.debug("JS: " + logEntry.getLevel() + ": " + logEntry.getMessage());
		}
	}

Leave a Reply




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>