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)
我该如何比较?
答案 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