Javascript WebdriverJS:driver.manage().logs().get(';browser';)返回空数组

Javascript WebdriverJS:driver.manage().logs().get(';browser';)返回空数组,javascript,selenium-webdriver,webdriverjs,Javascript,Selenium Webdriver,Webdriverjs,我有下面的mocha测试用例,我试图在最后打印webdriver日志,但它返回一个空数组。即使我将“browser”作为参数传递给logs().get()时,结果也是一样的。有人能告诉我为什么日志是空的吗 it('should open a url', function(done){ var By = nemo.wd.By; driver.manage().logs(); driver.get("http://www.google.com"); driver.fi

我有下面的mocha测试用例,我试图在最后打印webdriver日志,但它返回一个空数组。即使我将“browser”作为参数传递给logs().get()时,结果也是一样的。有人能告诉我为什么日志是空的吗

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();
    });
});

这是因为在创建驱动程序实例时,我没有在功能列表中启用日志记录选项。现在已解决这些更改

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();

这还取决于所使用的浏览器驱动程序-例如,当chromedriver>=2.29时,日志有时会“延迟”-
logs()。奥斯卡的能力调整也是如此。因此,这里有一个解决方法:

function getPerfLogs(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))

@Artem的回答验证了我看到的行为,但我发现了一个不同的解决方案,使用量角器:在访问日志之前显式调用
browser.waitForAngular()

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) { ... });

也许可以试试driver.logs()。看起来webdriverjs有一个更直接的方法:这是因为我在创建驱动程序实例时没有在功能列表中启用日志选项。现在解决了。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();您应该回答自己的问题,并将其标记为FF的solvednice解决方案,但您有IE11的解决方案吗?