2015-10-19 2 views
2

У меня есть нг-повторить директиву, что я ищу использовать транспортир ретранслятор, чтобы получить обратно массив:Могу ли я вернуть массив в Protractor by.Repeater вместо строки?

<div ng-repeat="product in landingPage.products" class="landing-buttons"> 
    <a ui-sref="personalInfo"> 
    <button type="button" class="btn btn-primary btn-block">{{product}}</button></a> 
</div> 

Я просто хочу {{продукт}} строка вернуться в массив, но я просто получите то, что похоже на строку JSON. Какие-нибудь предложения здесь?

+0

Можете ли вы опубликовать один пример результата JSON? – Custodio

+0

Да, это то, что я возвращаюсь: ['Несчастный случай и здоровье', 'Инвалидность', 'Жизнь'] –

+0

Можете ли вы показать, какой код вы сейчас выполняете? Благодарю. – alecxe

ответ

1

Проблема на самом деле в `allButtons.getText().

Эта функция применяется к угловому элементу, и результат представляет собой конкатенацию всего, что соответствует критериям: button. (Которые являются N на основе ng-repeat и, следовательно, дают вам массив).

Проверьте, можете ли вы, основываясь на атрибуте allButtons, найдите тот, который вам больше всего интересен. например:

expect(landingPage.allButtons.first().getText()).toEqual('Accident & Health'); 

Edit: Закрепление утверждение использовать первый() вместо ElementAt (0), как упомянуто @alecxe

+1

Если мы переведем его на язык «транспортир»: 'expect (landingPage.allButtons.first(). GetText()). ToEqual ('Accident & Health');'. Но, кроме того - ответ имеет смысл и на правильном пути. – alecxe

+0

Это прекрасно - именно то, что мне было нужно, - я хотел убедиться, что я использую Protractorese. Спасибо @Custodio и @Alexce! –

+0

Есть ли учебное пособие по теме ".first?" - Могу ли я использовать второй и третий? –

1

Хотя .first() помогли мне получить первый элемент, для любого последующего я использовал .get (index).

it('should have buttons', function() { 
expect(landingPage.allButtons.first().getText()).toEqual('Accident & Health'); 
expect(landingPage.allButtons.get(1).getText()).toEqual('Disability'); 
expect(landingPage.allButtons.get(2).getText()).toEqual('Life'); 
}); 

Это работает сейчас. Спасибо всем за вашу помощь.

Смежные вопросы