当使用selenium-webdriverjs运行mocha测试时,调用堆栈没有太大帮助
Not very helpful callstack when running a mocha test using selenium webdriverjs
当使用selenium webdriver for JavaScript在mocha中运行测试时,调用堆栈并没有真正的帮助。
作为一个简单的例子,我使用了以下简单的测试脚本test.js
:
var webdriver = require('selenium-webdriver'),
test = require('selenium-webdriver/testing');
const TIMEOUT = 30000;
test.describe('selenium webdriverjs', function () {
var driver;
this.timeout(TIMEOUT);
test.before(function () {
driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.firefox()).build();
driver.manage().timeouts().pageLoadTimeout(TIMEOUT);
});
test.after(function () {
driver.quit();
});
test.it('error stack', function () {
driver.get('http://www.google.com');
driver.findElement(webdriver.By.id('doesnotexit'));
});
});
当(例如)从Gulp:运行时生成以下错误堆栈
selenium webdriverjs
1) error stack
0 passing (4s)
1 failing
1) selenium webdriverjs error stack:
NoSuchElementError: Unable to locate element: {"method":"id","selector":"doesnotexit"}
at new bot.Error (...'node_modules'selenium-webdriver'lib'atoms'error.js:108:18)
at Object.bot.response.checkResponse (...'node_modules'selenium-webdriver'lib'atoms'response.js:109:9)
at ...'node_modules'selenium-webdriver'lib'webdriver'webdriver.js:379:20
at promise.Promise.goog.defineClass.invokeCallback_ (.../node_modules/selenium-webdriver/lib/goog/../webdriver/promise.
js:1337:14)
at promise.ControlFlow.goog.defineClass.goog.defineClass.abort_.error.executeNext_.execute_ (.../node_modules/selenium-
webdriver/lib/goog/../webdriver/promise.js:2776:14)
at promise.ControlFlow.goog.defineClass.goog.defineClass.abort_.error.executeNext_ (.../node_modules/selenium-webdriver
/lib/goog/../webdriver/promise.js:2758:21)
at goog.async.run.processWorkQueue (...'node_modules'selenium-webdriver'lib'goog'async'run.js:124:15)
From: Task: selenium webdriverjs error stack
at Context.ret (...'node_modules'selenium-webdriver'testing'index.js:128:10)
at callFnAsync (...'node_modules'mocha'lib'runnable.js:306:8)
at Test.Runnable.run (...'node_modules'mocha'lib'runnable.js:261:7)
at Runner.runTest (...'node_modules'mocha'lib'runner.js:421:10)
at ...'node_modules'mocha'lib'runner.js:528:12
at next (...'node_modules'mocha'lib'runner.js:341:14)
at ...'node_modules'mocha'lib'runner.js:351:7
at next (...'node_modules'mocha'lib'runner.js:283:14)
at Immediate._onImmediate (...'node_modules'mocha'lib'runner.js:319:5)
堆栈由本地node_modules
目录的mocha
和selenium
库中的一系列深度嵌套函数组成,而实际的测试脚本test.js
甚至不是堆栈的一部分。
我想知道,如果我只是做错了什么,这是否真的是我能从这个设置中得到的最好的信息?
是的,对于所有无意义的异步回溯crft来说,这确实是太多不必要且没有真正帮助的信息,但其中最重要的部分,即网络驱动程序错误本身,是最重要的,并且非常自我描述:
NoSuchElementError:找不到元素:{"方法":"id","选择器":"doesnotexit"}
您可以尝试在mocha-clean
包的帮助下清理输出。当应用时,它应该真正留下错误消息本身,并且只留下堆栈跟踪的相关部分,从而消除mocha
-和selenium-webdriver
-特定的所有内容:
Mocha堆叠痕迹布满了你不想看到的框架,比如来自模块和Mocha内部的代码。它剥去了摩卡内部、node_modules、绝对路径(基于cwd)和其他不必要的cruft。
相关文章:
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 超过了async.detect最大调用堆栈大小
- 如何远程检查JavaScript应用程序的函数调用堆栈
- 超过了最大调用堆栈大小,循环无限
- 超过了最大调用堆栈大小.递归标签
- 日志:未捕获的范围错误:超过了最大调用堆栈大小
- 未捕获的范围错误:setTimeout()超过了最大调用堆栈大小
- JavaFX+WebView/Javascript:setTimeOut不起作用调用堆栈来自Java
- JavaScript继承:未捕获的范围错误:超过了最大调用堆栈大小
- 使用$cookies和$stateChangeStart检查sessionID是否超过了最大调用堆栈
- jQuery捕获"RangeError:超过了最大调用堆栈大小“;
- 设置这个.RangeError:超过了最大调用堆栈大小
- 收到“范围错误: 超出最大调用堆栈大小”错误
- 递归 - 测试最大堆栈大小时,调用堆栈无法弹出
- 轮询 ajax 函数超出调用堆栈
- Chrome RangeError:使用jQuery$.map时超过了最大调用堆栈大小
- 要求JS 2.1.9引起“;最大调用堆栈"使用Grunt时出错
- Chrome/jQuery未捕获范围错误:超过了最大调用堆栈大小(函数循环)
- 超过了最大调用堆栈大小-没有明显的递归
- 在 javascript 中使用函数堆栈调用非递归方法