Создание теста, который выполняется в цикле

У меня есть этот код и работает нормально, но я хочу, чтобы он работал в цикле, чтобы он посчитал, сколько элементов он имеет в class="socal" а затем проверить каждую ссылку.

module.exports = {
    'Unitel Fitness - click' : function (browser) {
    browser
        .url('http://m.unitel.ao/fit/')
        .execute('scrollIntoView(alignToBottom)')
        .waitForElementVisible('.socal>span:nth-child(1) a', 6000)

        .moveToElement('.socal>span:nth-child(1) a', 3, 3)
        .pause(6000)
        .click(".socal>span:nth-child(1) a")
        .pause(6000)
        .keys(['\uE006'])

        .window_handles(function (result) {
            var handle = result.value[1];
            browser.switchWindow(handle);
            browser.pause(1000);
            //browser.assert.urlContains('facebook');
            browser.closeWindow();
        })
        .end();
    }
};

Я обновил код для этого, но все еще не делал именно то, что я хочу. В результате получается следующее: (Я уже пытался дать больше времени)

Количество ссылок: 4 i val перед execute: 1 i val перед execute: 2 i val перед execute: 3 i val перед execute: 4? Истекло время ожидания присутствия элемента <.socal>span:nth-child("+ i +") a> в течение 8000 миллисекунд. - ожидается "видимый", но получил: не найдено

module.exports = {
                'Social links' : function (browser) {
        browser
            .url('http://m.unitel.ao/fit/')
            .execute(function(){
                        return document.querySelectorAll(".socal>span").length;
                    },

            function(links) {
                total_links = links.value;

                console.log("Number of links: " + total_links);

                for (var i = 1; i <= total_links; i++) {
                    console.log("i val before execute: " + i);

                    browser.execute('scrollIntoView(alignToBottom)');
                    //browser.waitForElementVisible('.socal>span:nth-child("+ i +") a', 8000);

                    //call back function
                    browser.waitForElementVisible('.socal>span:nth-child("+ i +") a', 5000, function() {

                    browser.moveToElement('.socal>span:nth-child("+ i +") a', 3, 3);
                    browser.pause(8000);
                    browser.click(".socal>span:nth-child("+ i +") a");
                    browser.pause(6000);
                    browser.keys(['\uE006']);

                    browser.window_handles(function (result) {
                        var handle = result.value[1];
                        browser.switchWindow(handle);
                        browser.pause(8000);
                        //browser.assert.urlContains('facebook');
                        browser.closeWindow();
                    })
                        });
                }
            })

               // .end();
            }
};

1 ответ

Зачем делать цикл, когда вы можете получить коллекцию и использовать .length? Это также более производительно.

client.getEls(classSel, function(collection) {      
            return collection.length;
});
Другие вопросы по тегам