Ich habe eine teilweise mit einem select2 Elemente verwendet Angular UI http://angular-ui.github.io/AngularJS E2E Testing mit kantigem-UI Select2 Elemente
Das Problem, das ich in laufen lasse, ist, dass das Element benötigt wird, und obwohl ich habe erfolgreich das Feld durch die eingestellte Im folgenden Code wird das erforderliche Attribut nicht entfernt, da das Modell von Angular aufgrund der Änderung von außen nicht aktualisiert werden muss und ich bin mir nicht sicher, ob ich entweder $ scope.apply() bereitstellen oder eine andere Funktion von Angular verwenden soll, um den Test fortzusetzen.
Erste direkte jQuery-Funktionen laufen lassen: (aus 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));
});
};
});
Dann den Feldwert ändern:
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');
Beachten Sie, dass nicht alle diese Funktionen benötigt werden, um spiegeln die Änderungen an der Ui, nur alles, was ich verwendet habe, um zu versuchen und dies funktioniert ...
, wenn das Element id-Attribut hat dann die von select2 erstellt div wird werden s2id_ –