Nei miei test ho dovuto verificare se tutti i valori previsti sono presenti in una casella di selezione. Mi c'è voluto un po 'ma alla fine ho creato questa funzione di supporto:Il goniometro ottiene tutti i valori della casella di selezione (opzione)
function getSelectValues(elementFinder)
{
var defer = protractor.promise.defer(),
promise = defer.promise;
elementFinder.all(by.tagName('option')).then(function(elements)
{
var values = [],
elemCount = elements.length,
counter = 0;
elements.forEach(function(element)
{
element.getAttribute('value').then(function(optionValue)
{
counter += 1;
values.push(optionValue);
if(counter === elemCount)
{
defer.fulfill(values);
}
});
})
});
return promise;
}
Funziona, ma sembra davvero brutto per me. C'è un modo migliore per farlo?
EDIT:
Dopo altre due ore di lettura di documentazione ho ottenuto la mia funzione di supporto ridotto a:
getSelectValues: function(elementFinder)
{
return elementFinder.all(by.tagName('option')).map(function(elem, index)
{
return elem.getAttribute('value');
});
}
profileType = element(by.model('regObj.profileType'));
expect(getSelectValues(profileType)).toEqual(['', 'aa', 'bb', 'cc']);
ben fatto! puoi aggiungerlo come risposta alla tua stessa domanda. –
"come migliorare il mio codice" le domande non sono in realtà il modo StackOverflow: s non sarà downvote, ottimo risultato :) – nilsK
Forse la domanda non lo dice chiaramente ma ho pensato che ci fosse un modo migliore per farlo. Alcuni metodi che non ho trovato nella documentazione o qualcosa :) Grazie :) – Ralphz