Capturing browser logs with Selenium WebDriver using Java

后端 未结 9 1944
闹比i
闹比i 2020-11-28 03:01

Is there a way to capture browser logs while running automated test cases with Selenium? I found an article on how to capture JavaScript errors in Selenium. But that is just

相关标签:
9条回答
  • 2020-11-28 03:46

    Starting with Firefox 65 an about:config flag exists now so console API calls like console.log() land in the output stream and thus the log file (see (https://github.com/mozilla/geckodriver/issues/284#issuecomment-458305621).

    profile = new FirefoxProfile();
    profile.setPreference("devtools.console.stdout.content", true);
    
    0 讨论(0)
  • 2020-11-28 03:50

    Adding LoggingPreferences to "goog:loggingPrefs" properties with the Chrome Driver options can help to fetch the Browser console logs for all Log levels.

    ChromeOptions options = new ChromeOptions();    
    LoggingPreferences logPrefs = new LoggingPreferences();
    logPrefs.enable(LogType.BROWSER, Level.ALL);
    options.setCapability("goog:loggingPrefs", logPrefs);
    WebDriver driver = new ChromeDriver(options);
    
    0 讨论(0)
  • 2020-11-28 03:51

    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

    0 讨论(0)
提交回复
热议问题