でそれを解決せずに作業の約束は、私のページオブジェクトコード以下分度器
this.getRowBasedOnName = function (name) {
return this.tableRows.filter(function (elem, index) {
return elem.element(by.className('ng-binding')).getText().then(function (text) {
return text.toUpperCase().substring(0, 1) === name.toUpperCase().substring(0, 1);
});
});
};
上記の機能が
this.clickAllProductInProgramTypeBasedOnName = function (name) {
this.getRowBasedOnName(name).then(function (requiredRow) {
requiredRow.all(by.tagName('label')).get(1).click();
});
};
が、上記である、別の関数内の同じページオブジェクトで呼び出されていますコードではコンソールにエラーが表示されるrequiredRow.allは関数ではありません
ただし、以下の場合は
this.clickAllProductInProgramTypeBasedOnName = function (name) {
var row = this.getRowBasedOnName(name)
row.all(by.tagName('label')).get(1).click();
};
これは問題なく動作し、必要な要素をクリックします。
しかしthis.getRowBasedOnName()関数は、それがその後、をuisng機能解決した後に使用することができなければならない約束を、返します。どうやってそれを変数に代入するだけで作業できますか?
あなたのメソッド 'this.getRowBasedOnName(name)'は、Web要素( 'ElementArrayFinder')のメソッドで拡張された約束を返します。これらのメソッドの呼び出しは、新しい約束を連鎖させます。したがって、最初のケースでは約束事を処理しており、2番目では配列である約束の結果を処理しています。 –