8

I am having issues getting chrome browser console log [INFO] entries with Selenium and the only Level type of entries I am getting are the errors(WARNING, SEVERE).

Is there any way to get anything different than the error entries as I need to get the [INFO] entries and assert based on their content, I have read recently that Selenium is able to return entries only for errors is that accurate?

Would really appreciate any information given, thank you for your attention and time!

ciconq
  • 201
  • 1
  • 2
  • 11
  • 1
    Possible duplicate of [Selenium Web Driver: Extracted Chrome Browser logs are incomplete](https://stackoverflow.com/questions/57146129/selenium-web-driver-extracted-chrome-browser-logs-are-incomplete) – Dani R Jul 23 '19 at 09:23

2 Answers2

3

thank you for your answer but unfortunately none of them worked for me, I have managed to come up with a solution for my issue using:

    ChromeOptions options = new ChromeOptions();
    options.setCapability(ChromeOptions.CAPABILITY, getCap());
    WebDriver driver = new ChromeDriver(options);

Alongside with the custom made method:

private static DesiredCapabilities getCap() {
    DesiredCapabilities caps = DesiredCapabilities.chrome();
    LoggingPreferences logPrefs = new LoggingPreferences();
    logPrefs.enable(LogType.PERFORMANCE, Level.INFO);
    logPrefs.enable(LogType.PROFILER, Level.INFO);
    logPrefs.enable(LogType.BROWSER, Level.INFO);
    logPrefs.enable(LogType.CLIENT, Level.INFO);
    logPrefs.enable(LogType.DRIVER, Level.INFO);
    logPrefs.enable(LogType.SERVER, Level.INFO);
    caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
    return caps;
}

And finally had to make a filter method as the Selenium one was not working properly for me and was returning all of the entries:

private static List<LogEntry> filterLog(LogEntries entries) {
    List<LogEntry> logs = new ArrayList<>();
    for (LogEntry entry : entries) {
        if(entry.getLevel().toString().equals(INFO)) {
            logs.add(entry);
        }
    }
    return logs;
}
ciconq
  • 201
  • 1
  • 2
  • 11
2

From the documentation (http://chromedriver.chromium.org/logging):

By default ChromeDriver logs only warnings/errors to stderr. When debugging issues, it is helpful to enable more verbose logging.

Also from documentation:

System.setProperty("webdriver.chrome.logfile", "D:\\chromedriver.log");
System.setProperty("webdriver.chrome.verboseLogging", "true");

Hope that works.

Alternative Option

You could try the following if the above doesn't work, this time using the ChromeOptions object instead:

ChromeOptions options = new ChromeOptions();
options.setArguments("--log-level=1");

or from (https://www.chromium.org/for-testers/enable-logging)

To enable logging, launch Chrome with these command line flags: --enable-logging --v=1

Which translates into:

options.setArguments("--enable-logging --v=1");
Timothy T.
  • 1,031
  • 1
  • 12
  • 25