gpt4 book ai didi

javascript - Protractor 端到端测试中的异步执行

转载 作者:行者123 更新时间:2023-11-30 16:59:41 25 4
gpt4 key购买 nike

我写了一个函数,它返回一个值。在我的主要我调用函数是这样的:

var fn_return_val = lesson.select_lesson(lesson1_text);  
console.log("returned value is : " + fn_return_val);

我的函数实现就像(其他 file.js):

module.exports = {
select_lesson:
function select_lesson(lesson_name) {

console.log('\n ************************* Lessson name: ' + lesson_name);
var desiredOption, status;
var repeter = element.all(by.repeater('item in items'));

repeter.then(function (items) {
items.forEach(function (icon) {
console.log('\n ************************* item');
icon.getText().then(function (txt) {
if (txt == lesson_name) {
desiredOption = icon;
}
})
}).then(function clickOption() {
if (desiredOption) {
var el = desiredOption.all(by.css('[ng-click="launchActivity()"]'));
var el_progress = desiredOption.all(by.css('.pna-progress'));
var abc = el.getAttribute('value').then(function (txt) {
status = txt;
return status
});
el_progress.getAttribute('style').then(function (progress) {
console.log('\n ************************* Lessson progress : ' + progress);
});
el.click();
}
});
});
}

};

问题是函数正在返回“未定义”值,打印语句 console.log("returned value is : "+ fn_return_val);在函数实现之前执行

谁能帮我解决这个问题?

最佳答案

这都是关于 promise 和 Protractor 的 Control Flow .

您需要解决 promise 并将结果记录在then中:

lesson.select_lesson(lesson1_text).then(function(fn_return_val) {
console.log("returned value is : " + fn_return_val);
});

你还需要从一个函数返回:

function select_lesson(lesson_name) {

...

// return here
return repeter.then(function (items) {
...
}).then(function clickOption() {
...
});
});
}

关于javascript - Protractor 端到端测试中的异步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29097384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com