【问题标题】:For protractor test, can we get waitElement object value without browser.wait() function?对于量角器测试,我们可以在没有 browser.wait() 函数的情况下获取 waitElement 对象值吗?
【发布时间】:2015-06-21 16:37:16
【问题描述】:

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

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

部分实现如下:

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

我想在这里实现两件事:

1) 超时后返回真/假。

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

【问题讨论】:

    标签: javascript asynchronous protractor wait


    【解决方案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 中完成的所有事情都是异步发生的。

    【讨论】:

    • 是的,你是绝对正确的@Olov。我没有正确使用(或理解)承诺拒绝。谢谢!我不是在调用方解决,而是在返回真/假值的函数级别执行此操作:function waitObject(elm, timeout) { return browser.driver.wait(function() { return elm.isPresent()。 then(function(res) { return res; }); }, timeout).then(null, function() { return false; }); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2018-12-25
    • 2016-10-12
    相关资源
    最近更新 更多