2

我需要断言.row一系列 div 的孩子的数量.container大于 0。

this.Then(/^I should see at least one element in each container$/, function (done) {  
    page.element.all(by.css('.container'))                                                    
        .each(function (element, index) {                                     
            element.all(by.css('.row'))                               
                .then(function(elements) {                                        
                    expect(elements.length).to.be.greaterThan(0);                   
                    done();                                                       
                });                                                               
    });
});                                                                   

标记看起来像:

<div class="container">
    <div class="row"></div>
    <div class="row"></div>
    <div class="row"></div>
</div>
<div class="container">
    <div class="row"></div>
</div>

每个容器中必须至少有一个.row

问题是它总是通过,只要第一个检查为真。

我尝试了使用protractor.promise对象的不同解决方案,还尝试在each迭代中保存承诺,然后尝试在最后实现预期,但没有任何效果。

我已经开始考虑我应该从一个完全不同的角度来采用这种方法。

有接盘侠吗?

4

1 回答 1

0

您应该获取每个 div 下的行元素,然后断言每个 div 中是否有多个行。尝试这个 -

this.Then(/^I should see at least one element in each container$/, function () {  
    page.element.all(by.css('.container'))                                                    
        .each(function (ele, index) {                                     
            ele.$$('.row')     // get all the row elements in each div                           
                .then(function(elements) {                                        
                    expect(elements.length).to.be.greaterThan(0);                                                                         
                });                                                               
    });
});  

希望这可以帮助

于 2015-09-18T16:05:34.800 回答