#javascript #angularjs #protractor
#javascript #angularjs #транспортир
Вопрос:
Я должен создать метод, который выполняет некоторые действия, пока какой-либо элемент не виден на странице. Когда это отобразится, я заканчиваю тест.
this.waitHolidayInCalendarFunc = function () {
return browser.wait(anyHolidayInCalendar.isDisplayed()
.then(nextWeekButton.click()));
};
Но возникает ошибка
«сбой: fn не является функцией»
Я попробовал сделать метод, подобный этому:
this.IsPresentHoliday = function () {
browser.wait(function () {
return holiday.isPresent();
}, defaultDelay);
};"
И в тесте я добавляю ‘while’ вот так
var clickNextWeek = new holidaycalendar.NavigateOnCalendarView();
while (clickNextWeek .IsPresentHoliday() == false ) clickNextWeek.GoNextWeek();
Но метод isPresent() возвращает true (но элемент отсутствует на странице) и тест пройден! Пожалуйста, помогите!
Ответ №1:
Используйте ExpectedConditions
вместе с browser.wait
, чтобы заставить ваши скрипты ожидать выполнения определенных условий. Попробуйте приведенный ниже код.
var EC = protractor.ExpectedConditions;
var waitTime = 5000; //5 secs
var elementToBeVisible = element(by.id("some-id"));
browser.wait(EC.visibilityOf(elementToBeVisible),waitTime);