2017-02-21 95 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]); 
    } 
})