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 argument to the logs().get(). Can someone please tell me why the logs are empty?
it('should open a url', function(done){
var By = nemo.wd.By;
driver.manage().logs();
driver.get("http://www.google.com");
driver.findElement(By.name('q')).sendKeys("webdriver");
driver.findElement(By.name('btnG')).click()
driver.manage().logs().get('driver').then(function(logs){
console.log(logs);
done();
});
});
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.
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:@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:https://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.waitForAngular