【发布时间】:2015-03-17 02:16:02
【问题描述】:
我正在尝试构建一个功能测试系统,以验证我们的网站对我们的用户而言是否正确运行。我拼凑了一堆 Node.js 模块和帮助程序,试图获得一个框架,该框架提供简单、简洁的测试而没有大量嵌套函数回调,我相信 Promise 可以提供这一点,所以我的 package.json 文件看起来像这样:
"dependencies": {
"chai-as-promised": "^4.3.0",
"grunt": "^0.4.5",
"grunt-webdriver": "^0.4.8"
}
我的Gruntfile.js 看起来像这样:
module.exports = function(grunt) {
grunt.initConfig({
webdriver: { // for use with webdriver.io
options: {
desiredCapabilities: {
browserName: 'phantomjs' // No Xvfb required
}
},
chrome: {
tests: ['chrome/*.js'],
options: {
desiredCapabilities: {
browserName: 'chrome'
}
}
},
},
});
grunt.loadNpmTasks('grunt-webdriver');
grunt.registerTask('default', ['webdriver']);
};
最后我在chrome/login.js 中的测试用例看起来像这样:
'use strict';
var chai = require('chai'),
chaiAsPromised = require('chai-as-promised'),
assert;
chaiAsPromised.transferPromiseness = browser.transferPromiseness;
chai.use(chaiAsPromised);
assert = chai.assert;
describe('login test', function () {
it('verifies user can log in', function(done) {
browser
.url('https://localhost/')
.setValue('#userauth_username','foo')
.setValue('#userauth_password',"password")
.submitForm('#form_users_login')
.then(function(){
browser.getText('#auth-user-id', function(err, value){
console.log(value);
});
assert.becomes(browser.getText('#auth-user-id'), 'foo');
})//.call(done);
});
});
当我在命令行上运行grunt webdriver:chrome 时,我看到它启动了 Chrome 并登录到网站。 'auth-user-id' 跨度在登录后正确显示用户 ID,但由于某种原因 browser.getText() 没有返回它,因此测试失败。我尝试在.submitForm() 之后添加.pause(100),让我有时间与Chrome 中的页面进行交互,所以我知道这是测试用例中的问题。
我做错了什么?
【问题讨论】:
标签: selenium gruntjs mocha.js webdriver-io chai-as-promised