量角助手的功能,如何等待



我有这个代码块:

    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();
}

在运行测试之前,要编译"即时"代码

希望它有帮助

最新更新