我有一个多值选择器,我正在尝试为其编写 E2E 测试。使用select(name).option
效果很好,但是当我尝试使用select(name).options
来选择多个值时它不起作用。
我试图将一些代码放在一起进行演示,但无法使其正常工作。
HTML:
<html lang="en">
<head>
<title>End2end Test Runner</title>
<script src="http://code.angularjs.org/1.0.1/angular-scenario-1.0.1.js"
ng-autotest>
</script>
</head>
<body ng-app="MyApp">
<div ng-controller="MyAppCtrl">
{{model.exampleValue}}
<select id="a_selector"
ng-model="model.selectedItems"
ng-options="item.name for item in model.items"
multiple="multiple">
</select>
</div>
</body>
Javascript:
var app = angular.module('MyApp', ['ngResource'])
app.controller('MyAppCtrl', function($scope) {
$scope.model = {};
$scope.model.exampleValue="an example value";
$scope.model.items = [{"name": "Product1"}, {"name": "Product2"}];
});
app.config(['$routeProvider', function ($routeProvider, $scope) {
$routeProvider.when('/', {controller:MyAppCtrl});
}]);
describe('my app', function() {
it('should display the home page', function() {
browser().navigateTo('/');
// this should work (when I can fix this code!)
select("model.selectedItems").option("Product1");
expect(element("#a_selector option:selected").count()).toEqual(1)
// this doesn't, nothing is selected
select("model.selectedItems").options("Product1", "Product2");
expect(element("#a_selector option:selected").count()).toEqual(2)
});
});
线
select("model.selectedItems").option("Product1");
失败并显示错误消息:
Selector select[ng\:model="model.selectedItems"] did not match any elements.
如果有人可以(1)帮助我确定上述代码根本不起作用的原因,以及(2)帮助我理解为什么不起作用,我将不胜感激select(name).options
。(我知道我可以使用其他技术来实现相同的目标,但是select
生产代码中的 real 也有一个ng-change
属性,当我尝试变通方法时不会触发)。
谢谢,
格雷姆·路德维希。