如何在 nightwatch.js 中使用循环

How to use loop in nightwatch.js

pageObject中有函数

this.openFilmPage = function() {
    browser.waitForElementVisible("div[class='pg'", 1000);
    for (var i = 0; i < 4; i += 1) {
        console.log('Итерация № ' + i);

        browser.waitForElementVisible("div[class='app'] > div[class='pg'] > div[class='home carousel'] > div[class='home-lst carousel-lst'] > div[class*='home-lst-itm nav-itm']:nth-of-type(" + i + ") > div[class='badge badge-currency']", 100, function(result) {
            if (result.value) {
                return browser;
                console.log('Платный фильм обнаружен');
            } else {
                return browser;
                console.log('Платный фильм отсутствует');
            }
        });

    }
    return browser;
}

测试中有挑战

'TC67 Переход на страницу платного фильма': function(browser) {
    browser
        .page.App().open()
        .page.App().openFilmPage()
        .end();
}

开始后我在控制台中得到下一个结果

Running: TC67 Переход на страницу платного фильма Итерация № 0 Итерация № 1 Итерация № 2 Итерация № 3

然后是检查,一旦一个零位置,测试失败,因为在这个位置不是预期的item。

我希望所有测试都将逐一执行,结果我得到一个与指定的 css 路径匹配的元素。

但经验表明情况并非如此,在异步模式下循环出现 运行,因为它可以克服吗?

PS。对不起我的英语。

您似乎在尝试创建自定义命令。查看此部分:

http://nightwatchjs.org/guide#writing-custom-commands

您会注意到您需要创建的文件的名称应该是实际的方法名称(所以在您的情况下:openFilmPage.js)

最后;您需要将 nightwatch.json 中的路径添加到自定义命令所在的文件夹 (http://nightwatchjs.org/guide#basic-settings)

希望对您有所帮助!