我有这个代码块:
function searchBox(filterName, objectList, filterField) {
randIndex = Math.floor(Math.random() * objectList.length);
element(by.id(filterName)).clear();
Delay(delay);
element(by.id(filterName)).click();
element(by.id(filterName)).sendKeys(objectList[randIndex][filterField]);
console.log("FilterName: ", filterName);
console.log("FilterField: ", filterField);
Delay(delay);
element.all(by.repeater(filterName)).each(function (item) {
item.getText().then(function (text) {
expect(text).toContain(objectList[randIndex][filterField]);
})
});
};
it('Search for company name in searchbox on My tab', function () {
var randIndex;
$('[ng-click="companyCtrl.tabClick(0)"]').click();
Delay(delay);
$('[ng-controller="CompanyListController as companyCtrl"]').evaluate("companyCtrl.partnersList").then(function (partnersList) {
searchBox('companyFilterMy', partnersList, 'name');
searchBox('companyFilterMy', partnersList, 'city');
searchBox('companyFilterMy', partnersList, 'statusText');
});
});
我想做诸如 await
-ing searchBox
函数之类的事情,因为截至目前,下一个是在以前的呼叫。
我使用 npm install --save asyncawait
安装了异步
var async = require('asyncawait/async');
var await = require('asyncawait/await');
之后,我调整了上述代码以使其看起来像这样,并且有效:
var searchBox = async(function (filterName, objectList, filterField) {
randIndex = Math.floor(Math.random() * objectList.length);
await (element(by.id(filterName)).clear());
Delay(delay);
await (element(by.id(filterName)).click());
await (element(by.id(filterName)).sendKeys(objectList[randIndex][filterField]));
console.log("FilterName: ", filterName);
console.log("FilterField: ", filterField);
Delay(delay * 5);
await (element.all(by.repeater(filterName)).each(function (item) {
item.getText().then(function (text) {
expect(text).toContain(objectList[randIndex][filterField]);
})
}));
console.log("ASUIHGIUADSHGUH");
return true;
});
it('Search for company name in searchbox on My tab', function () {
var randIndex;
$('[ng-click="companyCtrl.tabClick(0)"]').click();
Delay(delay);
$('[ng-controller="CompanyListController as companyCtrl"]').evaluate("companyCtrl.partnersList").then(async(function (partnersList) {
await (searchBox('companyFilterMy', partnersList, 'name'));
await (searchBox('companyFilterMy', partnersList, 'city'));
await (searchBox('companyFilterMy', partnersList, 'statusText'));
}));
});
您正在使用哪个版本的节点?
当您使用节点7.6或更高时,您可以使用async等待开箱即用,而您不需要库才能执行此操作,另请参阅此链接以获取支持和此链接如何使用它。
如果您使用的是Typescript 2.3或更高版本,也可以使用async/await
并在beforeLaunch()
中使用 ts-node
beforeLaunch: () => {
require('ts-node').register();
}
在运行测试之前,要编译"即时"代码
希望它有帮助