您的位置:首页 > Web前端 > JavaScript

Nightwatch.js 异步中调用等待执行

2017-10-17 17:00 211 查看

Nightwatch.js 异步调用方法

在自动化实例中 常常需要等待异步执行完毕,

例如文件还没下载完 就执行到了下面的上传代码块 这样自动下载和上传的实例就失败了。

异步执行涉及的关键词 

async

await

Promise((resolve, reject)

resolve()


browser
......
.perform(async (browser, done) => {
let endData = getLastMonthDate().lastDay;
let startDate =getLastMonthDate().firstDay;

for (var i = 0; i < dataUrls.length; i++) {
type = i;
await handleType(browser, dataUrls[i], endData, startDate);
}
.perform((browser, done) => {
handleUpload(browser);
done();
})
done();
})
......

function handleType(browser, dataUrl, endData, startDate) {
return new Promise((resolve, reject) => {
browser
.pause(2000)
.url(dataUrl +startDataStr +startDate + endDataStr +endData +'&is_detail=true')
.waitForElementVisible('.table-bordered', null, null, null, '\n\n 【找到数据】')

.waitForElementVisible('.pagination', null, null, null, '页数')
.execute(function () {
return +document.querySelector('.pagination :nth-last-child(3)').innerText;
}, [], (results) => {
pagesCount = results.value;
console.log('总页数-->'+pagesCount);
});

browser
.perform(async (browser, done) => {
for (let page = 1; page <= pagesCount; page++) {
console.log('当前页 ['+ page +']');
await handlePage(browser, page);
}
console.log('打印数据 ↓↓↓ \n');//打印数据
console.log(datas);//打印数据
writeXls(datas);//输出excel

done();
})
.perform(() => {
resolve();
});
});
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: