WebdriverJS: driver.manage().logs().get('browser')返回
WebdriverJS : driver.manage().logs().get('browser') returns empty array
我有以下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().get('performance')
承诺解析为空数组,但在等待之后,它解析为数据。Oscar的功能调整也是如此。这里有一个变通方法:
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的回答验证了我所看到的行为,但是我为我的情况找到了一个不同的解决方案,使用Protractor:在访问日志之前显式调用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) { ... });
https://www.protractortest.org//api ?视图= ProtractorBrowser.prototype.waitForAngular
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用从browser.elements()返回的元素
- WebdriverJS: driver.manage().logs().get('browser')返回
- In-browser-javascript:在什么情况下.Open返回null/undefined
- 为什么JavaScript "this"在Node和Browser环境中返回不同的值