Я пишу протрансляторные тесты и люблю его, хотя иногда кажется, что они попадают на что-то похожее, как будто оно должно быть простым. Например, я хочу пропустить все кнопки на одной из наших страниц с текстом "Назначить". На странице есть десятки, но только 1 или 2 будут видны. Поэтому я хочу щелкнуть первый, который есть. Здесь код, который я использую в настоящее время:
var nominateButtons = element.all(by.buttonText('Nominate'));
nominateButtons.then(function(els){
for(var x = 0;x < els.length;x++){
//Since isDisplayed returns a promise, I need to do it this way to get to the actual value
els[x].isDisplayed().then(function(isVisible){
//isVisible now has the right value
if(isVisible){
//But now els is not defined because of the scope of the promise!!
els[x].click();
}
});
}
});
Когда я запускаю этот код, я получаю ошибку "не могу вызвать метод щелчка undefined", потому что els [x] больше не входит в область видимости, но я не могу проверить видимость без использования обещания. Итак, мой вопрос: как вы можете прокручивать коллекцию элементов, проверять их видимость и щелкнуть первый, который видим? (Я пытаюсь не использовать ожидающий проверки видимости, потому что я знаю, что большинство кнопок не будут видны)
Заранее спасибо