Как создать пользовательскую функцию webdriver.io?

Я использую webdriver.io с mocha.js, и мне нужно много раз создавать какое-то действие, и я не хочу дублировать свой код, поэтому я хочу создать пользовательскую функцию и вызывать функцию в каждом тесте мокко (это)...

для примера:

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

Спасибо.


person Yossi Nagar    schedule 12.10.2015    source источник
comment
Вы спрашиваете, как написать функцию. Вам действительно следует потратить некоторое время на чтение некоторых учебных пособий и изучить основы инструментов, которые вы пытаетесь использовать.   -  person JeffC    schedule 18.10.2015


Ответы (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);
    });
});
person garajo    schedule 12.11.2015
comment
есть ли лучшее место, в котором файл вы должны поместить этот код? - person user2010955; 21.03.2017

попробуй это

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). Поскольку логин возвращает клиентское обещание, все работает как раньше.

person Eduard Jacko    schedule 25.11.2015