Home > Software design >  How to get browser console logs when using Browser library in Robotframework
How to get browser console logs when using Browser library in Robotframework

Time:05-03

I'm using Robotframework and Browser library to automate some tasks on the web. I used to use Selenium, and with selenium there is a way to get the logs, for example in the case of a failure:

driver = webdriver.Remote()
logs = driver.get_log('browser')

I've been struggling to find a way to do the same exact thing using Playwright's Browser library. Is it possible?

CodePudding user response:

Certainly. You can use the page.on('console') event to log what appears in the DevTools console. Here's an example of using debug library to do so.

Make sure to export DEBUG=playwright:console or you won't see anything. Here's how to do it in JS:

const playwright = require('playwright');
const debugConsole = require('debug')('playwright:console');

(async () => {
    const browser = await playwright.chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();

    await page.on('console', (msg) => {
        if (msg && msg.text) {
          if (typeof msg.text === 'function') {
            debugConsole('PAGE LOG:', msg.text());
          } else {
            debugConsole('PAGE LOG:', msg.text);
          }
        } else {
          debugConsole('PAGE LOG:', msg);
        }
    });

    await page.goto('https://example.com', { waitUntil: 'networkidle' });

})();

And in python:

from playwright.sync_api import sync_playwright

def print_args(msg):
    for arg in msg.args:
        print(arg.json_value())

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.on("console", print_args)
    page.goto("https://abrahamjuliot.github.io/creepjs/", wait_until="networkidle")
    page.wait_for_timeout(5000)
    browser.close()

If you are looking for more system-level stuff, there is also a dumpio launch parameter that you can set, which will cause Playwright to provide verbose logs on the actual launch of browser executable.

  • Related