2017-02-21 7 views
0

У меня есть вопрос относительно нижеприведенного кода для испытания в транспортиртере. А именно, как вы можете видеть во-первых, я нахожу список меток, а затем я проверяю его номер (три). Затем у меня есть первый цикл, где я сравниваю каждую метку со значением из моей таблицы. Здесь я использую i <table.length, а затем он работает правильно. Во втором цикле я использую labels.count(), который равен трем, потому что я проверил его раньше, но он вообще не работает. Транспортир проходит через этот контур независимо от того, какой результат проверки, и тест заканчивается как PASSED. Может ли кто-нибудь сказать мне, почему i <table.length состояние в петле работает и i<labels.count нет?транспортир и петли

//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() является обещанием, и вы не можете использовать его напрямую. Чтобы получить значение count, вам нужно сначала решить обещание. См. Ниже код,

labels.count().then(function(labelCount){ 
    for (var i = 0; i <labelCount; i++) { 
     expect(labels.get(i).getText()).toEqual(table[i]); 
    } 
}) 
Смежные вопросы