2016-06-28 8 views
0

Приложение, которое я тестирую, выводит список с использованием ретранслятора, и я хочу, чтобы можно было найти определенную строку и щелкнуть по кнопке редактирования внутри этой строки.Нажатие на элемент внутри ретранслятора с использованием существующего локатора

Я использую .filter найти соответствующую строку, а затем нажмите на кнопку редактирования, но это работает только если указать локатор для кнопки, а не, если я сошлюсь к существующему определению:

this.editWineButton = element(by.buttonText('edit')); 

this.editWine = function (wineName) { 
    this.wineListEntries.filter(function(row){ 
     return row.element(by.binding('wine.name')).getText().then(function(name){ 
      return name === wineName; 
     }); 
    }).then(function (elem) { 
    //THIS WORKS 
     var button = elem[0].element(by.buttonText('edit')); 
    //THIS FAILS 
     //var button = elem[0].editWineButton; 
     button.click(); 
    }); 
}; 

Определив локатор для кнопки редактирования, что мне нужно сделать, чтобы иметь возможность повторно использовать его с результатом фильтра?

Когда я бегу неисправную версию кода я получаю ошибку

«Ошибка: Не удается прочитать свойство„Клик“неопределенных».

Я уверен, что ответ должен быть очевиден, но я не вижу своей ошибки. Любые предложения были бы очень желанными.

ответ

0

Я попытался предложение igniteram1 по элем [0] .this.editWineButton, но это не решило проблему. Однако я нашел решение. Две ключевые части используют element.locator(), как описано в Protractor Chained Elements by Using Variables?. Во-вторых, добавление

_this = this; 

Пересмотренный код является:

this.editWineButton = element(by.buttonText('edit')); 

this.editWine = function (wineName) { 
    var _this = this; 
    this.wineListEntries.filter(function(row){ 
     return row.element(by.binding('wine.name')).getText().then(function(name){ 
      return name === wineName; 
     }); 
    }) 
    .then(function (elem) { 
     var button = elem[0].element(_this.editWineButton.locator()); 
     button.click(); 
    }); 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^