Webdriverjs : Driver.manage().logs().get('browser') Returns Empty Array
I have the following mocha test case, I'm trying to print the webdriver logs in the end, but its returning an empty array. The result is the same even when I pass 'browser' as argu
Solution 1:
It was because I didn't enable the logging option in the list of capabilities while creating the driver instance. Resolved now with these changes.
var pref = new webdriver.logging.Preferences();
pref.setLevel('browser', webdriver.logging.Level.ALL);
pref.setLevel('driver', webdriver.logging.Level.ALL);
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.firefox())
.setLoggingPrefs(pref).build();
Solution 2:
This also depends on browser driver being used - e.g. with chromedriver >= 2.29 the logs are sometimes 'late' - the logs().get('performance')
promise resolves with empty array, but after waiting it resolves with data. This is the same with Oscar's capabilities tweaks. So, here's a workaround:
functiongetPerfLogs(driver) {
let performanceLogs;
return driver.wait(() => {
return driver.manage().logs().get('performance')
.then(v => {
let nonEmpty = v.length > 0;
if (nonEmpty) {
performanceLogs = v;
}
return nonEmpty;
})
}, 1000)
.then(() => {
return performanceLogs;
});
}
getPerfLogs(driver)
.then(v =>console.log('performance logs', v))
Solution 3:
@Artem's answer validated the behavior I was seeing, but I found a different solution for my case, using Protractor: explicitly call browser.waitForAngular()
before accessing logs:
return item.click()
.then(function() {
// "Protractor automatically applies this command before every WebDriver action",// but apparently browser.manage().logs() is not an action. Without this line// here, logs are sometimes not picked up until some time later.return browser.waitForAngular()
})
.then(function() { return browser.manage().logs().get('browser') })
.then(function(logs) { ... });
https://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.waitForAngular
Post a Comment for "Webdriverjs : Driver.manage().logs().get('browser') Returns Empty Array"