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

For protractor test, can we get waitElement object value without browser.wait() function?

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

因为我们处理的是对象,所以我试图想出一个函数,如果对象是 visible/exist,它的布尔值是 return。

部分实现如下:

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

我想在这里实现两件事:

1)超时后returntrue/false

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

只需使用 then 作为 browser.wait return 一个根据传递给 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
});

这样你就可以根据条件是否超时做不同的事情。

我认为不 return 函数的承诺会很棘手。因为在 Protractor 中所做的一切都是异步发生的。