Транспортир - Если элемент отображается / представлен - PullRequest
0 голосов
/ 27 апреля 2020

, поэтому у меня есть очень странный сценарий, в котором я хочу добавить оператор if-else в мой код, и это из-за:

noCheckbox checkbox

Как вы можете видеть, тот, у которого 13:00, не имеет флажка, в то время как 16:00 имеет флажок, и в основном я хочу сделать простой тестовый пример: нажмите, если есть флажок, иначе мы продолжаем нажимать следующий кнопка шага. то есть ...

если мы установим флажок, чтобы щелкнуть по нему, то мы установим флажок, а затем нажмем кнопку "следующий шаг". Если мы не показываем / показываем никакой флажок, мы пропускаем его. (Нам не нужна функция ожидания, чтобы увидеть, загружается ли она, потому что она будет автоматически загружать c, как только я нажму определенное время c (нет вызовов из backend / api), поэтому, если я нажму 16:00, будет неизбежно всплывать флажок и наоборот.

 it("Has truck and choose first avaliable delivery",
            async function () {
                const nextStep = servicesPage.getForm().buttons.nextStep;
                let lateDelivery = element(by.className("checkbox-label"));

                if (lateDelivery.isPresent()) {
                    console.log("Checkbox")
                    await utils.elementToBeClickable(lateDelivery, "Late hour checkbox should be clickable");
                    await utils.click(lateDelivery);

                }

                console.log("Click")
                await utils.elementToBeClickable(nextStep, "Next step button should be clickable");
                await utils.click(nextStep);
            })

Что происходит, даже если у меня есть isPresent (), он все еще кажется go внутри оператора if, даже когда я проверяю страницу , element(by.className("checkbox-label")) вообще не представлен на веб-странице. Он появляется всякий раз, когда я нажимаю время после 16:00. Что я могу сделать, чтобы заставить его работать?

1 Ответ

1 голос
/ 27 апреля 2020
lateDelivery.isPresent()

возвращает обещание defined, поэтому оно истинно.

Синхронизируйте ваш код как

const isPresent = await lateDelivery.isPresent()
if (isPresent) {
// code
}

или разрешите его

lateDelivery.isPresent().then(res => {
   if (res) {
   // code
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...