我创建了一个获取所有链接并单击它们,然后使用另一种方法处理窗口的函数。一切正常,但现在我想提出一个条件,即仅单击几个链接。所以功能就像:

this.getLinks = function(){
    browser.driver.findElements(that.links).then(function(foundElements){
        var val;
        for(var i =0;i<foundElements.length;i++){
            browser.sleep(3000);
            foundElements[i].getText().then(function(textValue){
                val = textValue;
                **console.log(val);**
            });
            if(val != '??????' || val != '?????????' || val != '??????'){
                foundElements[i].click();
                that.getWindows();
             }
           }
        });
     };


我想让val的值超出承诺,以便我可以设置条件,仅单击选定的链接。

最佳答案

使用filter()根据文本值过滤掉元素,并使用each()将函数应用于过滤元素的每个元素:

this.getLinks = function() {
    element.all(that.links).filter(function(elm) {
        return elm.getText().then(function (val) {
            return val != '??????' || val != '?????????' || val != '??????';
        });
    }).each(function (elm) {
        elm.click();
    });
};

关于testing - 如何从 promise 中获得值(value)以实现 Protractor ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30112165/

10-11 04:01