所以我有一个很奇怪的场景,我想在我的代码中添加if-else语句,这是由于:
如您所见,一个有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之后按时间时,它的确会出现。我该怎么做才能使其正常工作?
lateDelivery.isPresent()
返回一个诺言,即defined
,这就是其真实的原因。
像这样同步代码
const isPresent = await lateDelivery.isPresent()
if (isPresent) {
// code
}
或解决
lateDelivery.isPresent().then(res => {
if (res) {
// code
}
}