量角器-如果显示/显示元素

问题描述 投票:0回答:1

所以我有一个很奇怪的场景,我想在我的代码中添加if-else语句,这是由于:

“Checkbox

如您所见,一个有13:00的复选框没有复选框,而16:00有一个复选框,基本上我想做的是一个简单的测试用例,请单击是否有复选框,否则我们继续按下一步步骤按钮。含义...

如果我们得到一个复选框,请单击,然后我们单击该复选框,然后按下一步。如果我们没有显示/显示任何复选框,那么我们将其跳过。 (我们不需要等待功能来查看其是否正在加载,因为一旦我按特定时间它就会自动加载(没有来自后端/ 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()发生了什么,即使我浏览该页面时,网页上也根本没有显示element(by.className("checkbox-label")),但它似乎仍然位于if语句内。每当我在16:00之后按时间时,它的确会出现。我该怎么做才能使其正常工作?

javascript selenium jasmine protractor
1个回答
1
投票
lateDelivery.isPresent()

返回一个诺言,即defined,这就是其真实的原因。

像这样同步代码

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

或解决

lateDelivery.isPresent().then(res => {
   if (res) {
   // code
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.