2015-03-20 2 views
1

Я создаю скрипт Protractor для проверки моей викторины, в которой задаются случайные вопросы и ответы, поэтому мне нужен мой скрипт, чтобы выяснить, какой ответ правильный, поэтому я могу щелкнуть его.Транспортир. Как получить фактические значения от ретранслятора, а не элементов?

Я не могу понять, как получить значения непосредственно из модели, а не элементы, поскольку правильные/неправильные не отображаются как элемент на странице.

Модель дает ответы в Choice in Question.Choices, и мне нужно найти выбор, где верно Choice.IsCorrect. Как получить доступ к этому значению?

Я бы не использовал функцию element(), верно?

element(by.repeater('Choice in Question.Choices').row(0).column('Choice.IsCorrect')) 

ответ

1

Идея заключается в том, чтобы использовать element.all() в сочетании с filter() и evaluate():

var correctChoices = element.all(by.repeater('Choice in Question.Choices')).filter(function (elm) { 
    return elm.evaluate('Choice.IsCorrect').then(function (value) { 
     return value; 
    }); 
}); 

В результате correctChoices будет содержать элементы, где Choice.IsCorrect является truthy.


Если вам нужно получить массив значений для правильного выбора, используйте map() и getAttribute():

correctChoices.map(function (elm) { 
    return elm.getAttribute('value'); 
}); 

или, если вам нужны тексты использовать getText():

correctChoices.map(function (elm) { 
    return elm.getText(); 
}); 
Смежные вопросы