Невозможно прочитать свойство 'click' из неопределенного для элемента в транспортире - PullRequest
0 голосов
/ 24 июня 2019

Я написал функцию для входа в приложение с помощью транспортира.

this.login = function(userName, password){
    return this.emailAddressInput.sendKeys(userName).then(function(){
        return this.nextButton.click().then(function(){
            return this.passwordInput.sendKeys(password).then(function(){
                 this.tibcoLoginButton.click().then(function(){
                     return require('./tce.apps.js') 
                 })

            })
        })

Я вызываю функцию в одном из моих спецификационных файлов.

Но ошибка, которую я получаю:

Failed: Невозможно прочитать свойство 'click' из undefined.

Это если для следующей кнопки.Почему это происходит?

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Попробуйте это

this.login = function(userName, password){
    var self = this;
    return self.emailAddressInput.sendKeys(userName).then(function(){
        return self.nextButton.click().then(function(){
            return self.passwordInput.sendKeys(password).then(function(){
                 return self.tibcoLoginButton.click().then(function(){
                     return require('./tce.apps.js') 
                 })
            })
        })
    })
}

И нет необходимости использовать вложенный then(), но сделайте следующее, чтобы сделать его более читабельным.

this.login = function(userName, password) {
  var self = this;
  self.emailAddressInput.sendKeys(userName);
  self.nextButton.click();
  self.passwordInput.sendKeys(password);

  return self.tibcoLoginButton.click().then(function() {
    return require('./tce.apps.js')
  });
}
0 голосов
/ 03 июля 2019

вам не нужно использовать , затем функцию, чтобы написать функцию входа в систему.Вы можете попробовать создать страницу объекта LoginPage, выполнив следующее:

var EC = protractor.ExpectedConditions;

this.getUserInput = function () {
        return user_input;
    };
this.getPasswordInput = function () {
        return password_input;
    };
this.setUserInput = function (text) {
        user_input.clear().sendKeys(text);
    };
this.setPasswordInput = function (text) {
        password_input.clear().sendKeys(text);
    };
this.getLoginButton = function () {
        return login_button;
    };
    this.clickLogin = function () {
        login_button.click();
    };
this.login = function(username, password) {
    browser.wait(EC.presenceOf(this.getUserInput()));
    browser.wait(EC.presenceOf(this.getPasswordInput()));
    this.getUserInput().click();
    this.setUserInput(username);
    this.getPasswordInput().click();
    this.setPasswordInput(password);
    browser.wait(EC.elementToBeClickable(this.getLoginButton()));
    this.clickLogin();
  };
0 голосов
/ 24 июня 2019

this.nextButton не определено, потому что «this», будучи лексически внутри метода .then, ссылается на объект Promise.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...