2017-02-21 96 views
0

我有一个关于下面的代码在量角器测试的问题。 也就是说,您可以先看到标签列表,然后检查其编号(三)。然后我有第一个循环,我将每个标签与我的表中的值进行比较。这里我使用i <table.length,然后它正常工作。 在第二个循环中,我使用了labels.count(),它等于三,因为我之前检查过它,但它根本不起作用。不管检查的输出是什么,量角器都会经历这个循环,并且测试结束为PASSED。 谁能告诉我为什么i <table.length条件在循环工作和i<labels.count不?量角器和for循环

//labels list 
var labels = element.all(by.xpath("//form[@name='form']//label")); 

//test start 
describe('angularjs homepage', function() { 
it('test1', function() { 
    browser.get('http://www.way2automation.com/angularjs-protractor/registeration/#/login'); 

    //shows 3 
    labels.count().then(function(text){ 
      console.log(text); 
     }); 


    var table = ["Usern1ame","Password","Username *"]; 

    //first loop -> this one works if there is a difference between 'table' and element from 'label' list 
    for (var i = 0; i <table.length; i++) { 
     expect(labels.get(i).getText()).toEqual(table[i]); 
    } 

    //this one doesn't -> if there is a difference between 'table' and 'label' 
    //list nothing happens, no errors, test passes 
    for (var i = 0; i <labels.count(); i++) { 
      expect(labels.get(i).getText()).toEqual(table[i]); 
     } 





}); 

});

回答

2

在你的例子中,labels.count()是一个承诺,你不能直接使用它。要获得计数的价值,您需要首先解决承诺。看下面的代码,

labels.count().then(function(labelCount){ 
    for (var i = 0; i <labelCount; i++) { 
     expect(labels.get(i).getText()).toEqual(table[i]); 
    } 
})