量角器 - 如果元素是 displayed/presented
Protractor - If element is displayed/presented
所以我有一个非常奇怪的场景,我想在我的代码中添加一个 if-else 语句,这是由于:
如您所见,13:00 没有复选框,而 16:00 有一个复选框,基本上我想做的是一个简单的测试用例,如果有,请单击复选框否则我们继续按下一步按钮。意思...
如果我们得到一个要点击的复选框,那么我们点击该复选框,然后点击下一步。如果我们没有得到任何复选框 displayed/presented 那么我们就跳过它。 (我们不需要等待函数来查看它是否加载,因为它会在我按下特定时间后立即自动加载(没有来自 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() 也会发生什么,它似乎仍然在 if 语句中,即使当我检查页面时,网页上根本没有显示 element(by.className("checkbox-label"))
。每当我在 16:00 之后按下一个时间,它就会出现。我该怎么做才能让它发挥作用?
lateDelivery.isPresent()
returns 一个承诺,defined
这就是为什么它是真的。
像
一样同步你的代码
const isPresent = await lateDelivery.isPresent()
if (isPresent) {
// code
}
或解决
lateDelivery.isPresent().then(res => {
if (res) {
// code
}
}
所以我有一个非常奇怪的场景,我想在我的代码中添加一个 if-else 语句,这是由于:
如您所见,13:00 没有复选框,而 16:00 有一个复选框,基本上我想做的是一个简单的测试用例,如果有,请单击复选框否则我们继续按下一步按钮。意思...
如果我们得到一个要点击的复选框,那么我们点击该复选框,然后点击下一步。如果我们没有得到任何复选框 displayed/presented 那么我们就跳过它。 (我们不需要等待函数来查看它是否加载,因为它会在我按下特定时间后立即自动加载(没有来自 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() 也会发生什么,它似乎仍然在 if 语句中,即使当我检查页面时,网页上根本没有显示 element(by.className("checkbox-label"))
。每当我在 16:00 之后按下一个时间,它就会出现。我该怎么做才能让它发挥作用?
lateDelivery.isPresent()
returns 一个承诺,defined
这就是为什么它是真的。
像
一样同步你的代码const isPresent = await lateDelivery.isPresent()
if (isPresent) {
// code
}
或解决
lateDelivery.isPresent().then(res => {
if (res) {
// code
}
}