mam częściowy z elementem select2 wykorzystującego kątowa UI http://angular-ui.github.io/angularjs E2E Testowanie z Angular-UI Wybór2 Element
Problem używam na to, że wymagany jest element i chociaż nie udało się ustawić pole poprzez następujący kod, wymagany atrybut nie zostanie usunięty, ponieważ model Angular nie może być aktualizowany z powodu zewnętrznej zmiany i nie jestem pewien, jak zapewnić $ scope.apply() lub użyć innej funkcji Angular, aby kontynuować test.
pierwsze, aby umożliwić bezpośrednie funkcji jQuery Run: (zaczerpnięte z How to execute jQuery from Angular e2e test scope?)
angular.scenario.dsl('jQueryFunction', function() {
return function(selector, functionName /*, args */) {
var args = Array.prototype.slice.call(arguments, 2);
return this.addFutureAction(functionName, function($window, $document, done) {
var $ = $window.$; // jQuery inside the iframe
var elem = $(selector);
if (!elem.length) {
return done('Selector ' + selector + ' did not match any elements.');
}
done(null, elem[functionName].apply(elem, args));
});
};
});
Następnie, aby zmienić wartość pola:
jQueryFunction('#s2id_autogen1', 'select2', 'open');
jQueryFunction('#s2id_autogen1', 'select2', "val", "US");
jQueryFunction('#s2id_autogen1', 'select2', 'data', {id: "US", text: "United States"});
jQueryFunction('.select2-results li:eq(3)', 'click');
jQueryFunction('#s2id_autogen1', 'trigger', 'change');
jQueryFunction('#s2id_autogen1', 'select2', 'close');
input('request._countrySelection').enter('US');
pamiętać, że nie wszystkie z tych funkcji są potrzebne do odzwierciedlają zmiany w interfejsie użytkownika, po prostu wszystko, co wykorzystałem, aby spróbować i działało ...
jeśli element posiada atrybut id wtedy div stworzony przez Select2 będą s2id_ –