量角器 .isPresent() 停止循环
Protractor .isPresent() stop the loop
我正在尝试循环单击下拉选择,直到一个元素是 present.Even 虽然控制台记录“找到的数据”,但循环不会停止。
while (i < 23) {
//select dropdown selection
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
//click on the first dropdown
selectDeviceid.click();
//click apply button
deviceLogsPage.clickApply();
let bool = deviceContent.isPresent().then(function (isDisplayed) {
if (isDisplayed) {
console.log("found data");
return true;
//found and stop the loop
} else {
console.log("no data");
return false;
}
});
console.log(bool);
if (bool === true) {
break;
}
i++;
}
因为你正在使用异步代码和承诺......bool
将是一个 Promise......永远不是真或假,总是一个承诺
您可以使用async/await
它不必在异步 IIFE 中 - 如果此代码已经在函数中,只需创建该函数即可 async
(async() => {
while (i < 23) {
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
selectDeviceid.click();
deviceLogsPage.clickApply();
let bool = await deviceContent.isPresent();
if (bool) {
console.log("found data");
break;
} else {
console.log("no data");
}
i++;
}
)();
更简单的方法是让 bool 成为 while 条件的一部分
let bool;
while (i < 23 && !bool) {
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
selectDeviceid.click();
deviceLogsPage.clickApply();
bool = await deviceContent.isPresent();
i++;
}
我正在尝试循环单击下拉选择,直到一个元素是 present.Even 虽然控制台记录“找到的数据”,但循环不会停止。
while (i < 23) {
//select dropdown selection
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
//click on the first dropdown
selectDeviceid.click();
//click apply button
deviceLogsPage.clickApply();
let bool = deviceContent.isPresent().then(function (isDisplayed) {
if (isDisplayed) {
console.log("found data");
return true;
//found and stop the loop
} else {
console.log("no data");
return false;
}
});
console.log(bool);
if (bool === true) {
break;
}
i++;
}
因为你正在使用异步代码和承诺......bool
将是一个 Promise......永远不是真或假,总是一个承诺
您可以使用async/await
它不必在异步 IIFE 中 - 如果此代码已经在函数中,只需创建该函数即可 async
(async() => {
while (i < 23) {
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
selectDeviceid.click();
deviceLogsPage.clickApply();
let bool = await deviceContent.isPresent();
if (bool) {
console.log("found data");
break;
} else {
console.log("no data");
}
i++;
}
)();
更简单的方法是让 bool 成为 while 条件的一部分
let bool;
while (i < 23 && !bool) {
let selectDeviceid = lists.get(i);
deviceLogsPage.selectDevice();
selectDeviceid.click();
deviceLogsPage.clickApply();
bool = await deviceContent.isPresent();
i++;
}