3

我有一个多值选择器,我正在尝试为其编写 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属性,当我尝试变通方法时不会触发)。

谢谢,

格雷姆·路德维希。

4

2 回答 2

1

我仍在试图弄清楚为什么select(name).option()不起作用,但我可以通过以下修改使您的示例正常工作:

  1. 在 angular-scenario.js 之前包含 angular.js
  2. 去掉 ngResource 依赖——这里不需要
  3. 放在<span>{{model.selectedItems}}</span>你的<select>标签后面,看看你选择了什么。

一旦我弄清楚第二部分,我会更新。

于 2013-01-10T22:21:19.803 回答
0

select("model.selectedItems").option("Product1");应该select("#a_selector").option("Product1");取而代之吗?

于 2014-04-03T12:10:19.017 回答