2016-10-06 42 views
0

我有以下的HTML空數組從NG-重演量角器測試返回

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

在我example.page.js文件我嘗試使用得到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); 
}; 

(這裏examplePage是一個新的example.page.js)

根據日誌名稱長度爲0,但在屏幕上有兩個可見的名稱。

此外,如果我只是做this.names = element.all(by.repeater('item in ec.items').column('item.name')),那麼我可以看到名稱長度爲2,但不知道如何獲得'名稱'文本。當我登錄他們時,我只是得到[object Object],[object Object]。

因此,調用地圖函數似乎失去了2項。

使用評價函數的建議我得到items.length = 1,那麼,如果我做console.log(items[0])我得到整個元件印刷等

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和undefined。 – hello123

+0

奇怪的是,我做了'this.names = element.all(by.repeater('ec.items'中的項目))'然後得到了長度爲2.然後我做了'var mappedNames = this.names.map ... '評估函數和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並且undefined – hello123