Поскольку у других есть указатель, ваш разрыв не в вашем l oop, а в анонимной функции в вашем .then
. Кроме того, главная проблема заключается в том, что вы плохо выполняете свои обещания. Async/await
был введен, чтобы упростить обработку обещаний, не требуя от вас использования .then
операторов, поэтому вам определенно не следует использовать их вместе таким образом.
Также expect
операторы являются синхронными, поэтому не требуют ожидание, но действия внутри ожидаемого будут (почти всегда) асинхронными c при использовании Protractor, так что оператор должен читать expect(await element(By.cssContainingText(byElement.value, param)).isPresent()).toBe(true);
Вы можете переписать свой код следующим образом:
async function CompareTableData(byElement, param) {
try {
await this.WaitToBeClickable(element(By.cssContainingText(byElement.value, param)));
const item = await element.all(byElement)
for (var i = 0; i < item.length; i++) {
const text = await item[i].getText();
var trimTxt = text.trim();
if (trimTxt == param && byElement.using == "css selector") {
console.log(`Param FOUND! ${param}\n`);
expect(await element(By.cssContainingText(byElement.value, param)).isPresent()).toBe(true);
break;
} else {
return;
}
}
} catch (err) {
console.log("Table comparison FAILED, element not present!");
return console.log(err);
}
};