3

我正在使用webdriver.iowithmocha.js并且我需要多次创建一些操作,并且我不想复制我的代码,所以我想创建自定义函数并在每个 mocha 测试中调用该函数(它)...

例如:

    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);
      }
    }

所以就像你在这里看到的一样,我复制了我的登录代码......

有任何方法可以创建像登录这样的函数并在测试(它)中调用它:

function login(){
   client
   .setValue('input[name="username"]', login.username)
   .setValue('input[name="password"]', login.password)
}

谢谢。

4

2 回答 2

2

我不太确定您登录/注销的意图,但这里有一个通用的自定义命令,webdriver.io 自定义命令

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);
    });
});
于 2015-11-12T05:19:53.767 回答
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). 因为登录返回客户承诺,所以一切正常。

于 2015-11-25T10:47:05.323 回答