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

时间:2015-06-21 04:04:12

标签: javascript asynchronous protractor wait

我是量角器(和异步javascript)的新手,但我学习的最后几周我非常喜欢它。

由于我们处理对象,我试图想出一个函数,如果对象可见/存在则返回布尔值。

部分实施是这样的:

function waitObject(elm, timeout) {
    return browser.driver.wait(function() {
        return elm.isPresent().then(function(res) {
            return res;
        });
    }, timeout);
}

我想在这里做两件事:

1)超时后返回true / false。

2)当它为假时,它不会抛出超时错误但只是假。所以,我可以继续我的剩余测试。

1 个答案:

答案 0 :(得分:1)

只需使用thenbrowser.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中完成的所有操作都是异步的。