Page 296 - AngularJS权威教程
P. 296

276  第 19 章  测试



                     element(by.binding('user.name'));
                 });

                 要把这个测试丢到node调试器里运行,可以在调试模式下运行测试:
                 $ protractor debug conf.js
                 在调试模式下运行Protractor时,我们得到的好处是让浏览器的执行停止,而且Protractor提供
             的每个客户端脚本在控制台中都可用。

                 要对Protractor的客户端脚本进行访问,我们可以用Protractor插入的window.clientSideScripts
             对象来调用它们。
                 2. element

                 element函数帮助我们找到正在测试的页面上的元素,并且与它们交互。
                 记住, element 的 返 回值并不是一 个 DOM元素 ,它是 ElementFinder 的 一个实例,
             ElementFinder是一个通过webdriver运作的对象。可以用这个对象的方法,如sendKeys和click,
             来跟页面上的对象交互。

                 完整的API太多了,更多的文档可以在Github上的文档页找到:https://github.com/angular/
             protractor/blob/master/docs/api.md
                 3. by

                 这个选项是元素定位策略的集合。可以通过CSS选择器、ID或者甚至绑定了ng-model的属性
             用它来查找元素。
                 by.binding  利用这个选项能可以查找使用ng-bind或者模板标记{{ }}绑定的元素,比如:

                 <h2 ng-bind="person.name"></h2>
                 我们可以在测试中使用下面这句来定位<h2>元素:

                 element(by.binding('person.name'))
                 by.model  可以使用by.model来搜索使用ng-model绑定的输入元素,比如:

                 <div my-directive ng-model="user.name"></div>
                 可以使用这句来定位<div>指令:

                 element(by.model('user.name'))
                 by.repeater  可以搜索包含了ng-repeat指令的元素。
                 比如,如果我们在一个ng-repeat中循环一个用户列表:

                 <ul>
                     <li ng-repeat="user in users"></li>
                 </ul>
                 可以定位<li>指令,用下面的方式使用by.repeater来获取一个行的列表:

                 element.all(by.repeater('user in users'))
   291   292   293   294   295   296   297   298   299   300   301