我在搜索框下面有一个嵌套的建议列表,如下所示:
<div class="type-row clearfix" data-ng-class="suggestion_type.klass" data-ng-repeat="suggestion_type in searchBoxData.suggestion_types">
<div class="type-name-wrapper" data-ng-show="suggestion_type.contents.length > 0">
<div class="type-name small semi-bold">{{suggestion_type.name}}</div>
</div>
<div class="type-content" data-ng-show="suggestion_type.contents.length > 0">
<ul>
<li data-ng-repeat="content in suggestion_type.contents" data-ng-class="{ selected: content.selected}" data-ng-mouseover="searchBoxData.selectSuggestion($parent.$index, $index)">
<div class="row-wrapper light clearfix" data-ng-click="searchBoxData.submitQuery($event);">
<div data-ng-bind-html="content.category_string"></div>
<div data-ng-bind-html="content.other_string"></div>
</div>
</li>
</ul>
</div>
</div>
例如,我想编写一个集成测试,用于检查显示的建议数量以及首先显示的建议类型。
我开始使用protactor编写测试。它还没有完成,因为我正在努力理解console.logs的输出。到目前为止它看起来像这样:
describe('autocomplete display', function(){
it('displays 2 results for categories and 2 results for task on -plu- search input ', function(){
var searchBox = element(by.id("inputAnimation"));
searchBox.sendKeys("plu").then(function(){
element.all(by.repeater('suggestion_type in searchBoxData.suggestion_types')).then(function(rows) {
console.log(rows);
for(var i=0;i<rows.length;i++){
rows[i].getText().then(function(foo){
console.log(foo);
});
rows[i].then(function(row){
row.findElements(by.binding('suggestion_type.name')).then(function(res){
res[0].getText().then(function(name){
console.log(name);
});
});
});
}
});
});
});
});
它的一个问题是没有超时,因此服务器并不总是有时间向我发送结果。另一个问题是我不理解为什么foo
似乎匹配绑定到ng-repeat中的suggestion_type对象的所有文本。任何帮助将不胜感激。