2016-09-07 4 views
0

複数の変数を持つリピータを(タイプ、名前)または他の組み合わせでフィルタリングする必要があります。私は首尾よくこれで一つの変数を使用して、これを行っている評価を使用してリピータから複数の変数をフィルタリングする

1変数

element.all(by.repeater("org in orgs")).filter(function (elm) { 
    return elm.evaluate("org.type").then(function (orgType) { 
     if (orgType === "ORG_TYPE_FOO") { 
      return orgType; 
     } 
    }); 
}).then(function (elms) { 
    //... 
}); 

試み1

私は(これを試みたが、評価してきた)しません2つのパラメータが好きなようです。 ORGNAMEはいつも私が最初のフィルタの後、再びニレをフィルタリング+評価することができると考えていたが、私はそれがニレので、仕事を得るように見えるカントundefined

element.all(by.repeater("org in orgs")).filter(function (elm) { 
    return elm.evaluate("org.type", "org.name").then(function (orgType, orgName) { 
     if (orgType === "ORG_TYPE_FOO" && orgName === "NAME1") { 
      console.log(orgType + " ------ " + orgName); 
      return orgType; 
     } 
    }); 
}).then(function (elms) { 
    //... 
}); 

試み2

ElementArrayFinder

で返します
element.all(by.repeater("org in orgs")).filter(function (elm) { 
    return elm.evaluate("org.type").then(function (orgType) { 

     if (orgType === "ORG_TYPE_FOO") { 
      return orgType; 
     } 
    }); 
}).then(function (elms) { 

    elms.filter(function (elm) { 
    return elm.evaluate("org.name").then(function (orgName) { 

     if (orgName === "NAME1") { 
      return orgName; 
     } 
    }); 
    }).then(function (elms) { 
     //... 

    }); 

}); 

答えて

0

あなたは、上記の方法のためにonce.parameterで複数の約束を解決するためにprotractor.promise.all()メソッドを使用することができます約束の配列を渡すことで、それは目を与えますあなたのケースでは、次のようなものを使用することができます。

element.all(by.repeater("org in orgs")).filter(function (elem) { 
    return protractor.promise.all([elem.evaluate("org.type"),elem.evaluate("org.name")]).then(function (resultArray) { 
     return (resultArray[0] === "ORG_TYPE_FOO" && resultArray[1] === "NAME1") 
    } 
    }); 
}).then(function (elms) { 
//... 
}); 
+0

ありがとうございました。 – goldjb

関連する問題