我在webdriver.io
使用mocha.js
并且我需要多次创建一些操作,我不想复制我的代码,因此我想创建自定义函数并调用每个mocha测试中的函数(it)......
举个例子:
describe('Register', function () {
it('Login', function (done) {
client
.url('http://exmaple.site.com)
.setValue('input[name="username"]', login.username)
.setValue('input[name="password"]', login.password)
.call(done);
}
it('Login and logout', function (done) {
client
.url('http://exmaple.site.com)
.setValue('input[name="username"]', login.username)
.setValue('input[name="password"]', login.password)
.click('#logout')
.call(done);
}
}
所以就像你在这里看到我复制我的登录代码......
有任何方法可以创建像login这样的函数并在测试中调用它(它):
function login(){
client
.setValue('input[name="username"]', login.username)
.setValue('input[name="password"]', login.password)
}
感谢。
答案 0 :(得分:2)
我不确定您对登录/注销的意图,但这是一个通用的自定义命令,webdriver.io custom command
client.addCommand('goGetTitle', function() {
return client
.url('https://www.yahoo.com/')
.getTitle()
});
describe('Test', function() {
it('should have gotten the title', function(done) {
client.goGetTitle().then(function(title) {
console.log('title', title);
})
.call(done);
});
});
答案 1 :(得分:1)
试试这个
function login(){
return client
.setValue('input[name="username"]', login.username)
.setValue('input[name="password"]', login.password)
}
describe('Register', function () {
it('Login', function (done) {
client
.url('http://exmaple.site.com)
.then( login )
.call(done);
}
it('Login and logout', function (done) {
client
.url('http://exmaple.site.com)
.then(login)
.click('#logout')
.call(done);
}
}
基本上,您将通过.then(login)
替换重复登录。因为登录返回客户端承诺,一切都工作为例外。