我开始阅读关于网页的自动化测试应用程式成为前两天,并经过大量的试验和错误(和tutorial)的最后总算在本地和BrowserStack运行几个实习生功能测试但有一件事我不能包裹头脑,就是报道。实习报告和错误处理
例如,我有一个简单的测试,填补了一些登录页面的数据,提交表单,并检查一切正常。
的代码可能是这个样子:
define(function (require) {
var registerSuite = require('intern!object');
var assert = require('intern/chai!assert');
var fs = require('intern/dojo/node!fs');
registerSuite({
name: 'index',
'Log in test': function() {
var user = 'username';
var pass = 'pAsssWord';
return this.remote
.get(require.toUrl('http://localhost/MyApp/'))
.setFindTimeout(20000)
//fill in username
.findDisplayedByCssSelector('#panelUsernamePassword .usernameField')
.click()
.clearValue()
.type(user)
.end()
//fill in password
.findDisplayedByCssSelector('#panelUsernamePassword .passwordField')
.click()
.clearValue()
.type(pass)
.end()
.takeScreenshot()
.then(function(data) {
fs.writeFileSync("after-data-filled.png", data, 'base64');
})
//click login button
.findDisplayedByCssSelector('#panelUsernamePassword button')
.click()
.end()
.sleep(500)
.takeScreenshot()
.then(function(data) {
fs.writeFileSync("after-login-pressed.png", data, 'base64');
})
//click popup close button
.findDisplayedByCssSelector('div[id$="close-button"]')
.click()
.end()
.sleep(500)
.takeScreenshot()
.then(function(data) {
fs.writeFileSync("no-popup.png", data, 'base64');
})
.end();
}
});
});
运行intern-runner config=tests/intern.js
测试会通过后,我会在控制台窗口类似
Listening on 0.0.0.0:9000
Tunnel started
‣ Created session chrome 39 on WINDOWS (c7873066-b185-4025-a93a-829ea0fdb364)
✓ chrome 39 on WINDOWS - index - Log in test (15.393s)
No unit test coverage for chrome 39 on WINDOWS
chrome 39 on WINDOWS: 0/1 tests failed
OK如果测试通过,我并不真正需要的很多信息,一切都很好,但在另一方面,如果在测试我有类似:
.findDisplayedByCssSelector('#thisIsSomethingThatIsNotOnThePage')
只有信息我得到的失败是:
NoSuchElement: An element could not be located on the page using the given search parameters.
有没有办法知道在页面上哪一个元素是不是发现了什么?也许我做错了什么?
谢谢
编辑:
完整的错误总结:
× chrome 47 on WINDOWS - index - Log in test
NoSuchElement: An element could not be located on the page using the given search parameters.
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\leadfoot\lib\findDisplayed.js:37:21>
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:393:15>
at run <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:237:7>
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\nextTick.ts:44:3>
at doNTCallback0 <node.js:419:9>
at process._tickCallback <node.js:348:13>
at Command.findDisplayed <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\leadfoot\Command.js:23:10>
at Command.prototype.(anonymous function) [as findDisplayedByCssSelector] <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\leadfoot\lib\strategies.js:28:16>
at Test.registerSuite.Log in test [as test] <tests\functional\index.js:21:6>
at <..\..\AppData\Roaming\npm\node_modules\intern\lib\Test.js:211:24>
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:393:15>
at runCallbacks <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:11:11>
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:317:4>
at run <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\Promise.ts:237:7>
at <..\..\AppData\Roaming\npm\node_modules\intern\node_modules\dojo\nextTick.ts:44:3>
at doNTCallback0 <node.js:419:9>
嗯,这是所有的信息,我得到的。我编辑了我的问题以包含完整的堆栈,我使用了官方教程中的配置文件,节点版本是v4.2.3。我可能在测试本身做了错误的事情,也许我需要以某种方式在'findDisplayedByCssSelector'行 –
上明确地抛出一个错误。至少,现在我知道我应该期待什么样的响应,我会试着研究一下这更进一步。谢谢。 –