在转发器中按型号发送密钥

时间:2015-05-11 18:44:08

标签: javascript angularjs testing protractor end-to-end

按照这个例子:Protractor get element by model in repeater array,我遇到了一个蠢货。我想将输入值发送到转发器内的元素。希望这是一个简单的解决方案!

我的HTML看起来与此类似。主要区别是“帖子”与“用户。邮件”。

<tr ng-repeat="post in user.posts">
    <td ng-click="activePost(post)" class="title">{{post.title}}</td>
    <td><button class="btn btn-danger" ng-click="delete(post)">Delete</button></td>
  <td><input type="text" ng-model="post.subtitle" 
        id="{{post.id}}" /></td>
 </tr>

然后按照这个例子,我写了这样的东西:

element.all(by.repeater('post in user.posts')).then(function(posts) {
   var activePost = posts[0].element(by.model('post.subtitle'));
   activePost.sendKeys('My post');
});

量角器测试在“activePost.sendKeys('我的帖子')”失败,出现以下错误:

NoSuchElementError: No element found using locator:  
by.model("post.subtitle"). 
Stacktrace:
         NoSuchElementError: No element found using locator: by.model("post.subtitle")
        at Array.forEach (native) Error
        at /Users/.../e2e/spec.js:51:17
        at Array.forEach (native) From: Task: Asynchronous test function: it() Error
        at [object Object].<anonymous> (/Users/.../e2e/spec.js:32:3)
        at Object.<anonymous> (/Users/.../e2e/spec.js:2:1)

有人会对我可以尝试的内容或不同的方式进行思考吗?谢谢!

答案:量角器抛出的错误与转发器完全无关,而是与视图中缺少的结束div标签无关。这不是偶然的奇怪吗?去搞清楚。

1 个答案:

答案 0 :(得分:0)

此处无需解决承诺,只需elementelement.all()

var elm = element.all(by.repeater('post in user.posts')).first().element(by.model('post.subtitle'));
elm.sendKeys('My post');

请注意,我在这里使用first()

请注意,一个简单的by.tagName()定位器也适用于此处:

var elm = element.all(by.repeater('post in user.posts')).first().element(by.tagName('input'));
elm.sendKeys('My post');