javascript - 无法从函数 Javascript 中更新变量

标签 javascript protractor

我试图从 rows.each() 中更新 rowNumber 变量,但是当我之后 console.log 时,它仍然设置为 null。我究竟做错了什么?我什至尝试定义 var rowNumber 'higher',结果相同。

var licenceNumber = 233521673;

it('should open created Driver Licence', function() {
    var rowNumber = null;

    var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));

    rows.each(function(element, index) {
        element.getText().then(function (text) {
            if (text.includes(licenceNumber)) {
                rowNumber = index;
                return true;
            }
        });
    });
    console.log('rowNumber = ', rowNumber);
});

最佳答案

使用Promise.all等到所有的 promise 都得到解决:

var licenceNumber = 233521673;

it('should open created Driver Licence', function() {
    var rowNumber = null;

    var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));

    var promises = [];

    rows.each(function(element, index) {
        var promise = element.getText().then(function (text) {
            if (text.includes(licenceNumber)) {
                rowNumber = index;
            }
        });
        promises.push(promise);
    });

    return Promise.all(promises).then(function () {
        console.log('rowNumber = ', rowNumber);
    });
});

请注意,链接到 Promise.all 的 Promise 也会返回到 Mocha。这很重要,因为它告诉 Mocha 该测试是异步的,并且在返回的 Promise 解决或拒绝之前不会被视为完成。了解更多相关信息here .

关于javascript - 无法从函数 Javascript 中更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025131/

相关文章:

javascript - 在 Protractor 中,如何在准确的时间抓取多个值以用于具有大量推送通知的应用程序

javascript - jquery:动态地将li项附加到ul然后添加click,但click贯穿每个li

javascript - 在 jquery 中动态创建元素列表的最佳实践

javascript - Protractor :无法使用 Protractor 获取所有元素

javascript - 滚动到每个段落时增加大小,当滚动不在段落中时使用 jquery 减小大小

file-upload - 如何使用 Protractor 上传文件

javascript - 使用 PKCS1-V1_5 (JavaScript) 加密的 RSA

javascript - 无法使用 Protractor 运行 cucumber 测试

javascript - Protractor 并行运行导致测试失败

javascript - 如何在 Protractor 中正确存储元素计数