Подтвердить что ты не робот

Транспортир ждет, когда элемент будет в DOM

У меня были проблемы с использованием Protractor. У меня действительно странное состояние ui-router, где трудно уйти от других элементов, чтобы начать работу со страницей. Есть ли способ сказать транспортиру, чтобы подождать, пока элемент не появится в DOM? Не отображается/отображается, но фактически создается? Я продолжаю пытаться использовать wait для элемента, но он явно недоступен для выбора.

browser.driver.wait(function () {
    return elem.isDisplayed();
});
4b9b3361

Ответ 1

Вы можете использовать browser.wait вместе с presenceOf ExpectedCondition:

var until = protractor.ExpectedConditions;
browser.wait(until.presenceOf(elem), 5000, 'Element taking too long to appear in the DOM');

Ответ 2

Транспортир включил ExpectedCondition для явного ожидания, которое позволяет вам ждать элемент в течение определенного периода времени. Вы должны быть в состоянии сделать следующее:

var EC = protractor.ExpectedConditions;

browser.driver.wait(function () {
    browser.wait(EC.visibilityOf(elem), 10000);
    return elem;
});

Ответ 3

первый параметр browser.wait - это функция, если нам нужно подождать, пока элемент не будет присутствовать независимо от времени, тогда мы можем использовать приведенный ниже код. Если вам нужно ограничить время ожидания до определенного времени, пожалуйста, дайте время как второй параметр "browser.wait"

browser.wait(function() {
    return element(by.css("#edudrop1")).isPresent()});