Capturing Browser Logs with Selenium Webdriver Using Java

Capturing browser logs with Selenium WebDriver using Java

I assume it is something in the lines of:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class ChromeConsoleLogging {
private WebDriver driver;

@BeforeMethod
public void setUp() {
System.setProperty("webdriver.chrome.driver", "c:\\path\\to\\chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
driver = new ChromeDriver(caps);
}

@AfterMethod
public void tearDown() {
driver.quit();
}

public void analyzeLog() {
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
for (LogEntry entry : logEntries) {
System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage());
//do something useful with the data
}
}

@Test
public void testMethod() {
driver.get("http://mypage.com");
//do something on page
analyzeLog();
}
}

Source : Get chrome's console log

How can i capture Browser console log using selenium and java

public void analyzeLog() {

LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
for (LogEntry entry : logEntries) {
System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage());
//do something useful with the data
}
}

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

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

Selenium Web Driver: Extracted Chrome Browser logs are incomplete

Since chromedriver 75.0.3770.8 CapabilityType.LOGGING_PREFS is deprecated. Use goog:loggingPrefs instead.

Getting console.log output from Chrome with Selenium Python API bindings

Ok, finally figured it out:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities=d)

# load the desired webpage
driver.get('http://foo.com')

# print messages
for entry in driver.get_log('browser'):
print(entry)

Entries whose source field equals 'console-api' correspond to console messages, and the message itself is stored in the message field.

Starting from chromedriver, 75.0.3770.8, you have to use goog:loggingPrefs instead of loggingPrefs:

d['goog:loggingPrefs'] = { 'browser':'ALL' }


Related Topics



Leave a reply



Submit