使用Node和Selenium进行Web爬网-功能乱序

时间:2018-10-05 08:50:10

标签: node.js selenium

对于使用Node.js进行网络抓取是新手,对于JS中的promises概念也是新手,如果这个问题看起来有点基础,请您道歉。我正在尝试获取Google云端硬盘上某个元素的颜色,然后,如果以前未找到该颜色,请对该元素执行进一步的操作。问题是代码没有按照编写的顺序运行。

在此示例代码中,控制台返回所有元素,然后返回所有颜色,其中应为元素,颜色,元素,颜色...

实际:

WebElement
WebElement
WebElement
WebElement
rgba(38, 166, 154, 1)
rgba(38, 166, 154, 1)
rgba(216, 27, 96, 1)
rgba(38, 166, 154, 1)

预期:

WebElement
rgba(38, 166, 154, 1)
WebElement
rgba(38, 166, 154, 1)
WebElement
rgba(216, 27, 96, 1)
WebElement
rgba(38, 166, 154, 1)

代码

function getUserColors() {
var promise = driver.findElements(webdriver.By.className('docs-revisions-tile-swatch'))
    .then(function(userColors) {
        var outputColors = [];
        for(var i=0; i<userColors.length;i++){
            console.log(userColors[i]);
                userColors[i].getCssValue('background-color').then(function(color) {
                    console.log(color);
                    if(!outputColors.includes(color)){
                        outputColors.push(color);
                        // Do some processing
                    }
            });             
        }
        return true;
    });
return promise;
}

如何使代码按顺序而不是如图所示运行?

干杯, 迈克尔

0 个答案:

没有答案
相关问题