2016-10-06 10 views
0

I私example.page.jsで空の配列は、分度器のテストでNG-繰り返しから返さ

<div data-ng-controller="exampleCtrl as ec"> 
    <div data-ng-repeat="item in ec.items"> 
     <blockquote> 
     {{item.name}} 
     </blockquote> 
    </div> 
</div> 

は、ファイルの次のHTMLは、私が使用してitem.nameのリストを取得しようとしてい

this.names= element.all(by.repeater('item in ec.items').column('item.name')).map(function (names) { 
    return names.getText(); 
}); 

はその後、私のexample.step.jsに私は

examplePage.names.then(function (names) { 
    console.log("Names length : " + names.length); 
}; 

0123(ここでexamplePageが新しいexample.page.jsである)を行うファイル

名前にはログに応じて長さ0がありますが、画面には名前でそれぞれ2つの項目が表示されます。

また、this.names = element.all(by.repeater('item in ec.items').column('item.name'))とすれば、その名前の長さは2ですが、名前のテキストを取得する方法はわかりません。私がそれらを記録すると、私は[オブジェクトオブジェクト]、[オブジェクトオブジェクト]を取得します。

マップ関数を呼び出すと何とか2つのアイテムが失われているようです。 分度器{ ......

:私は console.log(items[0])を行う場合、私は1 = items.length取得提案されているように評価関数を使う

は、その後、私は

ElementFinder { ptor_のように印刷された全要素を取得します

私はこの要素のgetText()を実行しようとしましたが、同じことが表示されます。

この理由は何か?私は最近非常に似たようなことをしてきましたが、それはうまくいっていますが、何らかの理由でこの機会にはうまくいかないのです。

おかげ

答えて

1

あなたはevaluate()を試すことができます - getText()テキストアーディティヤ神群の回答に加えて

Documentation on evaluate

this.names= element.all(by.repeater('item in ec.items')).map(function (elm) { 
    return elm.evaluate('item.name'); 
}); 

names.then(function(allValues){ 
    console.log(allValues.length) 
}) 
+0

私はこれを試して、allValues.lengthとallValues [0]をログアウトし、0と未定義を得ました。 – hello123

+0

奇妙なことに、私は 'this.names = element.all(by.repeater( 'item in ec.items'))'を実行した後、長さが2になりました。次に、 'var mappedNames = this.names.map ... ' 'evaluate関数とmappedNamesの長さは2ですが、mappedNames [0]は未定義です。 – hello123

1

を得ることができなかった場合には、代わりにmap()を使用しての、スコープ変数を評価する必要があります直接evaluate()を使用することができます。

this.names= element.all(by.repeater('item in ec.items').evaluate('item.name').then(function(itemNameAsArray){ 
console.log(itemNameAsArray.length) 
}) 
+0

Adityasの回答に対する私のコメントと同様に、これは0を返し、未定義です – hello123