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();
});
});
}
相关文章推荐
- 异步调用 后台调用 持续执行 断开连接/浏览器
- js 异步操作,回调函数控制执行顺序
- js for中调用ajax 。等待ajax执行完再继续循环
- delphi调用外部EXE,等待执行完毕时再响应后续操作.
- AJAXPro用法,关于JS同步和异步调用后台代码的学习
- Android 中aidl调用执行线程和同步异步问题
- 异步执行同步等待结果
- 回车执行js函数实现ajax调用
- Node.js的学习历程二同步异步调用等基础知识的理解
- AJAXPro用法,关于JS同步和异步调用后台代码的学习
- nightwatchjs --Expect element to not include text
- 关于异步执行(async)与异步等待(await)
- 利用JS 直接调用执行OC代码,非提取URL
- 异步执行js脚本——防止阻塞
- asyn-await.js 一个按顺序阻塞调用的 轻量级异步库
- (十)ArcGIS JS GP服务异步调用
- 关于js 中 异步调用的猜想
- JS用ActiveXObject调用本地EXE,再执行虚拟按键
- 等待几个异步任务都完成后在执行其他的操作
- OnClientClick用法 单击服务器 button 前先调用 JS 验证剩余字数,超出返回,不执行后台