В настоящее время у меня есть страница, на которой есть элемент, который отображается случайным образом. Для этого я создал функцию условия:
this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
dropdownLocator.isPresent().then(function(element) {
if (element) {
let select = dropdownLocator;
select.element(by.cssContainingText('option', chooseOption)).click();
}
});
};
Когда элемент отображается на экране, работающий тон и транспортир взаимодействуют с ним, но когда элемент IN NOT DISPLAYED на экране, я получаю сообщение:
Failed: element not visible: Element is not currently visible and may not be manipulated
Любой совет, чтобы помочь мне в этом?
Вам нужно также проверить, отображается ли элемент. Ваш элемент присутствует (т.е. Часть DOM), но он скрыт. Обратите внимание, что вы можете не только проверить, отображается ли элемент без предварительной проверки, если он присутствует. isDisplayed()
выдает ошибку, если элемент отсутствует.
this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
dropdownLocator.isPresent().then(function (present) {
if (present) {
dropdownLocator.isDisplayed().then(function (displayed) {
if (displayed) {
let select = dropdownLocator;
select.element(by.cssContainingText('option', chooseOption)).click();
}
});
}
});
};
Всем спасибо за ответы.
Я решил, что моя проблема меняется isPresent()
на isDisplayed()
. Смотрите мой код сейчас:
this.checkDropdownPresent = function (dropdownLocator, chooseOption) {
dropdownLocator.isDisplayed().then(function(element) {
if (element) {
let select = dropdownLocator;
select.element(by.cssContainingText('option', chooseOption)).click();
}
});
};
isDisplayed()
выдает ошибку, если элемент отсутствует.» ... поэтому, если вы хотите избежать возможной ошибки, лучше проверить оба в вашем сценарии. Я бы отметил его ответ как правильный.