Тест останавливается с условным действием на element.isDisplayed, и элемент не отображается - PullRequest
0 голосов
/ 08 мая 2019

В моем тесте у меня есть условие, чтобы проверить, отображается ли всплывающее окно.Если так, кнопка отмены нажата.Но если всплывающее окно не отображается, тест останавливается с ошибкой: NoSuchElementError: Элемент не найден с помощью локатора ( locator of popup )

Я нашел старый пост с той же проблемой: Как создать условие в транспортире, когда элемент существует или нет

, но упомянутые решения не сработали для меня.

isDisplayed () дает: NoSuchElementError

elementPresent () дает: timeout

мой код:

el.isDisplayed().then((result) => {
                if (result) {
                    // click cancel
                }
            });

Я ожидаю продолжения теста, когда всплывающее окно не отображается.Но если всплывающее окно не отображается, я получаю сообщение об ошибке или тайм-аут.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Попробуйте ниже

if(await el.isPresent() === true) {
        // click cancel
    }
0 голосов
/ 08 мая 2019

Если элемент отсутствует, вы не можете проверить его видимость.Вы можете попробовать:

     el.isPresent().then(isPresent => {
        if (isPresent) {
            el.isDisplayed().then(isDisplayed => {
                if (isDisplayed) {
                    cancel.click();
                } else { // so you'll know that it had failed:
                    expect(isDisplayed).toBeTruthy();
                }
                // the rest of the code
            });
        }
        expect(isPresent).toBeTruthy(); // again, so you'll know that it had failed:
        // the rest of the code
    });

Теперь я знаю, что это не самое элегантное решение, но оно должно работать.Кроме того, если после отмены нужно выполнить больше шагов, которые не зависят от него, и вы хотите, чтобы тест продолжался независимо от видимости всплывающего окна, вы можете удалить expect s, но это будет означать, что тест будет пройден, даже если всплывающее окно выполнитне появляются, и вы не сможете узнать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...