简体   繁体   中英

How to get browser console error messages using Selenium WebDriver + NodeJS?

In Selenium Webdriver for Javascript/NodeJS, how can I get the console.log and console.error of the browser?

I am using headless browser engines

const { Builder, By, until } = require('selenium-webdriver')
const chrome = require('selenium-webdriver/chrome')
const firefox = require('selenium-webdriver/firefox')

// get selectedBrowser and url from CLI options
let selectedBrowser, url

(async ()=> {
  let driver
  const screen = { width: 1920, height: 1080 }
  switch (selectedBrowser) {
    case 'firefox':
      driver = await new Builder()
        .forBrowser('firefox')
        .setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
        .build()
      break
    case 'chrome':
      driver = await new Builder()
        .forBrowser('chrome')
        .setChromeOptions(new chrome.Options().headless().windowSize(screen))
        .build()
      break
    default:
      throw Error('Wrong browser: ' + frontendTest)
  }

  await driver.get(url)

  // etc.
})()

As explained in the official selenium documentation , you must:

first, set the logging preferences

var prefs = new logging.Preferences();
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);

var caps = Capabilities.chrome();
caps.setLoggingPrefs(prefs);

and then retrieve the logs

driver.manage().logs().get(logging.Type.BROWSER)
     .then(function(entries) {
        entries.forEach(function(entry) {
          console.log('[%s] %s', entry.level.name, entry.message);
        });
     });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM