ciconq
ciconq

Reputation: 269

How to get Chrome browser console log [INFO] entries with Selenium

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!

Upvotes: 9

Views: 20532

Answers (3)

Arbetraryday
Arbetraryday

Reputation: 1

For anyone doing this using chrome.Options

Simply set the capability:

options = Options()
options.set_capability('goog:loggingPrefs', { 'browser':'ALL' })

To use the logs:

logs = driver.get_log("browser")
for log in logs:
    print(log)

Upvotes: 0

ciconq
ciconq

Reputation: 269

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;
}

Upvotes: 3

Timothy T.
Timothy T.

Reputation: 1101

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");

Upvotes: 2

Related Questions