等待范围评估量角器

时间:2014-04-10 19:16:29

标签: angularjs protractor

考虑这个简单的量角器测试:

<body>
    <div ng-app="test2App" ng-controller="test2Ctrl">
        <input ng-model="myValue">
    </div>
</body>


var test2App = angular.module('test2App', [])
test2App.controller('test2Ctrl', function($scope,$timeout) {
    $timeout(function() {
       $scope.myValue = true;
    },10000);
});

describe('my suite',function() {
    it('wait for a model to be defined',function() {
        element(by.model('myValue')).evaluate('myValue')
        .then(function(v) {
            expect(v).toBe(true);
        });
    });
});

有没有比量角器sleep()函数更好的方法来等待“myValue”加载到范围内?

THX

1 个答案:

答案 0 :(得分:6)

尝试使用browser.wait()

https://code.google.com/p/selenium/source/browse/javascript/webdriver/webdriver.js#519

browser.wait(function(){
  // Wait until condition is true.
  return element(by.model('myValue')).evaluate('myValue')
    .then(function(v) {
        // I'm not sure if it will evaluate to a string, try it.
        return v === 'true';
    });
}, 10000)

其中10000是以ms为单位的超时。