我是量角器(和异步javascript)的新手,但我学习的最后几周我非常喜欢它。
由于我们处理对象,我试图想出一个函数,如果对象可见/存在则返回布尔值。
部分实施是这样的:
function waitObject(elm, timeout) {
return browser.driver.wait(function() {
return elm.isPresent().then(function(res) {
return res;
});
}, timeout);
}
我想在这里做两件事:
1)超时后返回true / false。
2)当它为假时,它不会抛出超时错误但只是假。所以,我可以继续我的剩余测试。
答案 0 :(得分:1)
只需使用then
,browser.wait
会根据传递给browser.wait
的条件返回一个解析或拒绝的承诺:http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait
waitObject(element, 1000).then(function () {
// The condition resolved truthy, element is present
}, function () {
// Timed out
});
这样你可以根据条件是否超时来做不同的事情。
我认为如果不从函数中返回一个承诺会很棘手。因为在Protractor中完成的所有操作都是异步的。