如何在量角器中匹配数组

时间:2018-06-28 14:03:15

标签: arrays protractor

Spec.js文件:

it('validate return-comparison local filters names',function(){
         var namesArray1 = ['Returns Comparison', 'Financials','Quality','Top','10']
        for (var i = 0; i < 5; i++) {
           expect(element.all(by.css('.return-comparison .return-comparison-topbar')).get(i).getText()).toBe(namesArray[i])
        }
        })

输出: 讯息:

Expected 'Returns Comparison
    Financials Quality
    Top
    10' to be 'Returns Comparison'.
  

消息:       失败:索引超出范围。尝试访问索引为1的元素,但只有1个元素与定位符By(css选择器,   .return-comparison .retu rn-comparison-topbar)

我该如何比较?

1 个答案:

答案 0 :(得分:0)

就像@ S.Huston建议的那样,在数组的第0位只有1个元素,其中包含所有文本。它不是字符串元素的数组,至少不是您看待它的方式。因此,您可以这样做:

it('validate return-comparison local filters names',function(){
     var namesArray1 = ['Returns Comparison', 'Financials','Quality','Top','10']
    for (var i = 0; i < 5; i++) {
       expect(element(by.css('.return-comparison .return-comparison-topbar')).getText()).toContain(namesArray[i])
    }
    })

如果您担心它们的显示顺序,并且只有它们出现,您可能会迷失方向而只需

.toBe('Returns Comparison Financials Quality Top 10' ).

或者,如果您想保持最初的想法,仍然要摆脱.all,然后执行类似的操作 .getText().then(function(text){var partsOfStr = text.split(' ');});,然后将partsOfStr和数组元素与Expect和.toBe

进行比较