Javascript 对于量角器测试,我们可以在不使用browser.wait()函数的情况下获取waitElement对象值吗?

Javascript 对于量角器测试,我们可以在不使用browser.wait()函数的情况下获取waitElement对象值吗?,javascript,asynchronous,protractor,wait,Javascript,Asynchronous,Protractor,Wait,我是量角器(和异步javascript)的新手,但我最近几周的学习真的很喜欢它 因为我们要处理对象,所以我试图提出一个函数,如果对象可见/存在,它将返回布尔值 部分实现如下所示: function waitObject(elm, timeout) { return browser.driver.wait(function() { return elm.isPresent().then(function(res) { return res;

我是量角器(和异步javascript)的新手,但我最近几周的学习真的很喜欢它

因为我们要处理对象,所以我试图提出一个函数,如果对象可见/存在,它将返回布尔值

部分实现如下所示:

function waitObject(elm, timeout) {
    return browser.driver.wait(function() {
        return elm.isPresent().then(function(res) {
            return res;
        });
    }, timeout);
}
我想在这里实现两件事:

1) 超时后返回true/false


2) 当它为false时,它不会抛出超时错误,而是抛出false。因此,我可以继续剩下的测试。

只需使用
然后将
用作
浏览器。wait
返回一个承诺,该承诺根据传递给
浏览器的条件进行解析或拒绝。wait

通过这种方式,您可以根据条件是否超时执行不同的操作


我认为如果不从函数中返回一个承诺,这将是一件棘手的事情。因为在量角器中所做的一切都是异步进行的。

是的,您完全正确@Olov。我没有正确地使用(或理解)拒绝承诺。谢谢我不是在调用方进行解析,而是在返回真/假值的函数级别进行解析:函数waitObject(elm,timeout){return browser.driver.wait(function(){return elm.isPresent().then(function(res){return res;};},timeout)。然后(null,function(){返回false;});}
waitObject(element, 1000).then(function () {
    // The condition resolved truthy, element is present
}, function () {
    // Timed out
});