首先,介绍一些关于我的测试脚本将涵盖的内容的背景知识。
按网站上的按钮将向测试邮箱发送一封电子邮件。
此电子邮件可能需要 10 到 30 分钟才能到达测试邮箱。
所以使用以下代码imap-简单 https://www.npmjs.com/package/imap-simple ;
'get new email info': function(browser) {
imaps.connect(config).then(function (connection) {
return connection.openBox('INBOX').then(function () {
var searchCriteria = ['UNSEEN'];
var fetchOptions = {
bodies: ['HEADER', 'TEXT'],
markSeen: false
};
return connection.search(searchCriteria, fetchOptions).then(function (results) {
var subjects = results.map(function (res) {
return res.parts.filter(function (part) {
return part.which === 'HEADER';
})[0].body.subject[0];
});
console.log(subjects);
正确地返回一个空白subjects数组,因为测试邮箱尚未收到电子邮件。
在脚本的开头添加 30 分钟的暂停“有效”,因为 30 分钟之后subjects当电子邮件(99.99% 的时间)在 30 分钟窗口内发送时,数组就会被填充。
然而,这绝对不理想,因为电子邮件可能会在 15 分钟内收到,这意味着测试“浪费”了 15 分钟。
所以我理想中想做的是编写某种形式的循环(?)来测试是否subjects数组是否已填充。
因此,如果数组已填充,请继续执行测试脚本的其余部分(这需要测试数组是否包含特定文本)。
如果阵列未填充,请再等待一分钟,然后重试。
继续每分钟尝试一次,直到阵列被填充。
我试过了设置时间间隔, For loops, While循环等,但我似乎无法让它们工作,而且老实说我没有想法。
任何建议、帮助、参考将不胜感激,如果需要,可以立即添加任何更多信息。