2017-10-06 52 views
1

我想创建一个等待条件,将执行一个脚本,并根据返回值将确定是否需要等待或不。 我用量角器executeScript功能和浏览器的等待:量角器浏览器等待布尔条件条件

this.activeConnections = function(jsl) { 
console.log("Inside Active Connections"); 
switch (jsl) { 
case checkEnum.jQuery: 
console.log("Jquery Enum"); 
return browser.executeScript("return jQuery.active;").then(function(count) { 
console.log("The count is "+count); 
return count == 0; 
}); 
default: 
browser.logger.info("No asynchronous check performed."); 
break; 
} 
}; 

我期待的等待状态,以等待执行的脚本将评估为true,但不工作

this.waitForActiveConnections = function() { 
console.log("Inside Wait for Active Connections"); 
var condition = until.and(this.activeConnections(checkEnum.jQuery),false); 
console.log("Whats this condition "+ condition); 
return browser.wait(condition,30000); 
}; 
+0

得到它的简化版工作:this.waitForActiveConnections =功能()'{ 的console.log( “内等待活动连接”); return browser.wait(function(){ //等到条件成立为止 return browser.executeScript(“return jQuery.active;”)。then(function(count){ console.log(“Count is “+ count); return count == 1; }); },3000); };' –

回答

0

的主要问题是您的自定义预期条件需要返回一个可执行文件 - browser.wait()将连续执行的函数。喜欢的东西:

this.activeConnections = function(jsl) { 
    return function() { 
     switch (jsl) { 
      case checkEnum.jQuery: 
       return browser.executeScript("return jQuery.active;").then(function(count) { 
        return count == 0; 
      }); 
      default: 
       browser.logger.info("No asynchronous check performed."); 
       return true; 
       break; 
     } 
    } 
}