Arrays 量角器中数组的匹配

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

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])
        }
        })
信息: 失败:索引超出范围。试图访问索引为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' ).