Arrays 量角器中数组的匹配
Spec.js文件:Arrays 量角器中数组的匹配,arrays,protractor,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-com
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])
}
})
信息:
失败:索引超出范围。试图访问索引为1的元素,但只有1个元素与定位器匹配(css选择器,
.返回比较.返回比较(顶栏)
如何比较?就像@S.Huston建议的那样,数组中第0位只有一个元素包含所有文本。它不是一个字符串元素的数组,至少不是您看待它的方式。因此,你可以这样做:
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])
}
})
或者,如果你想保持你原来的想法,还是放弃。全部,然后做一些类似的事情
.getText().then(函数(text){var partsOfStr=text.split(“”);})编码>然后将partsOfStr和数组元素逐个与expect和进行比较。toBe您尝试搜索的css只返回1个元素。你有没有调查过你是否得到了你所期望的元素?不客气。请注意(我被这个烧焦了)从getText到contain的字符串检查子字符串。但是,如果对来自elements.all的多个元素(同时)执行getText,则返回一个字符串数组,并且toContain检查您的元素是否是其中的一个。
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' ).