如何获得选择器计数并传递给以后可以使用的变量?

时间:2019-07-01 19:44:10

标签: javascript nightwatch.js

我希望获得返回的项目的行计数,以便以后可以将过滤器添加到列表中。然后,我断言过滤后的列表号小于总数。

我尝试了许多.perform和.execute安排,并继续遇到未定义的错误。

module.exports = {
    'Verify rows': function (browser) {
        var value_id = 0;
        browser
            .url(browser.launchUrl)
            .waitForElementVisible('body', 20000)
            .pause(4000)
            .verify.visible('div:nth-of-type(2) > form > div > div > div > div')
            .assert.gdGreater('.offering-item-container', 0)
            .execute(function () {
                value_id = document.querySelectorAll('.offering-item-container').length;
            })
            .click('#IsGuaranteedToRun')
            .pause(4000)
            .assert.gdLess('#IsGuaranteedToRun', value_id)
    }

};

1 个答案:

答案 0 :(得分:0)

我找到了一个答案here,帮助我指出了正确的方向。然后,我必须在回调中包括后续步骤。

module.exports = {
    'Verify rows': function (browser) {
        var value_id = 0;
        browser
            .url(browser.launchUrl)
            .waitForElementVisible('body', 20000)
            .pause(4000);
            const numElementsPromise = new Promise(resolve => {
                browser.elements('css selector', '.offering-item-container', result => {
                    resolve(result.value.length);
                });
            });

        numElementsPromise.then(result => {
            value_id = result;
            browser
                .pause(4000)
                .verify.visible('div:nth-of-type(2) > form > div > div > div > div')
                .assert.gdGreater('.offering-item-container', 0)
                .click('#IsGuaranteedToRun')
                .pause(4000)
                .assert.gdLess('.offering-item-container', value_id)
                .click('#IsGuaranteedToRun')
                .assert.gdEquals('.offering-item-container', value_id);
        });
  }

};