Я пишу протрансляторные тесты и тому подобное, хотя иногда кажется, что они попадают на что-то похожее, как будто оно должно быть простым. Например, я хочу пропустить все кнопки на одной из наших страниц с текстом «Назначить». На странице есть десятки, но только 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();
}
});
}
});
Когда я запускаю этот код, я получаю «не может вызвать метод щелчка неопределенного» ошибки, потому что ELS [х] больше не в объеме, но я могу» Кажется, проверьте видимость, не используя обещание. Итак, мой вопрос: как вы можете прокручивать коллекцию элементов, проверять их видимость и щелкнуть первый, который видим? (Я стараюсь не использовать ожидать, чтобы проверить видимость, потому что я знаю, что большинство из кнопок не будет видно)
Заранее спасибо
Спасибо так много. Я весь день борюсь с этим. Я не только не понял, что х был виновником, я не знал о первой() функции, на которую вы ссылались, поэтому я очень благодарен. Я знаю, что щелчок по первому элементу не является хорошей идеей, и я обычно избегаю этого. Это, однако, несколько странный случай, и на самом деле это должно сработать, хотя я знаю, что могу в конечном итоге кусать свой язык. В любом случае, я очень ценю, что вы нашли время ответить. В итоге он завершил мою тестовую работу и научил меня нескольким вещам на этом пути. Я парень-питон и довольно новичок в JS и обещаю – user2233949
Добро пожаловать. Вы должны принять ответ, если он помог вам вместо ответа в новом ответе, хотя =) – hankduan
Я не знал, что мы можем связать элемент - спасибо – mrwaim