Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to get browser console logs from a remote chrome browser [duplicate]

Tags:

I want to build an automation testing, so I have to know the errors that appear in the console of chrome.

there is an option to get the error lines that appear in the console?

In order to see the console: right click somewhere in the page, click "inspect element" and then go to "console".

like image 224
Alon Shmiel Avatar asked Aug 15 '13 20:08

Alon Shmiel


1 Answers

I don't know C# but here's Java code that does the job, I hope you can translate it to C#

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

Pay attention to setUp method in above code. We use LoggingPreferences object to enable logging. There are a few types of logs, but if you want to track console errors then LogType.BROWSER is the one that you should use. Then we pass that object to DesiredCapabilities and further to ChromeDriver constructor and voila - we have an instance of ChromeDriver with logging enabled.

After performing some actions on page we call analyzeLog() method. Here we simply extract the log and iterate through its entries. Here you can put assertions or do any other reporting you want.

My inspiration was this code by Michael Klepikov that explains how to extract performance logs from ChromeDriver.

like image 88
JacekM Avatar answered Sep 28 '22 01:09

JacekM