如何按模型在量角器中访问项目级别的输入

时间:2014-12-01 11:16:15

标签: protractor

无法按型号

通过量角器访问角度输入

已通过post

<div ng-repeat="todo in todos">
  <!--i can access span-->
  <span>{{todo.text}}</span>
  <span>{{todo.address}}</span>
  <span>{{todo.done}}</span>

  <!--i CAN'T access input -->
  <input type="text" ng-model="todo.text"/>
  <input type="text" ng-model="todo.address"/>
  <input type="text" ng-model="todo.done"/>
</div>

量角器Javasript我可以在项目级别访问Span但无法访问输入

var result= 
browser.findElements(protractor.By.repeater('todo in todos').column('todo.text'));

/*For Span at item level It works*/
/*
result.then(function(arr) {
   arr[0].getText().then(function(text) {
    console.log(": "+ text);
  });
});*/

对于项目级别的输入它已经工作

尝试1:typeError:无法调用方法&#39; getText&#39;未定义的

/*
result.then(function(arr) {
   arr[0].getText().then(function(text) {
    console.log(": "+ text);  //TypeError: Cannot call method 'getText' of undefined
  });
});*/

尝试2:typeError:无法调用未定义的方法

如何根据

访问模型

How protractor access to model

result.then(function(arr) {
  arr[0].then(function(text) {
    console.log(": "+ text.getAttribute('value')); 

  });
});

无法找到我正在做的错误..是否还有其他方法可以访问Angular输入。

1 个答案:

答案 0 :(得分:2)

经过很长一段时间的努力,我能够做到这一点:

element(by.repeater('todos')).evaluate('todos.length').then(function(itemLength)
{
    for(var i = 0 ; i < itemLength ; i++)
    {
        var result= element(by.repeater('todo in todos').row(i));

        result.then(function(arr)
        {                     
            /*FETCH TEXT*/
            var m = arr.all(by.model("todo.text")).getAttribute('value');
            m.then(function(l){
                console.log(l);
            });

            /*CLEAR TEXT*/
            arr.all(by.model("todo.text")).clear();

            /*SET TEXT*/
            arr.all(by.model("todo.text")).sendKeys('Hello');
        });
    };
});

怀疑:

  1. 我知道Angular promise..then。我已将三个Angular promise..then嵌套在另一个内,但不知道为什么在量角器中使用then
  2. 以下&#34;评估&#34;只返回itemcount。