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

标签 javascript asynchronous protractor wait

我是 Protractor (和异步 JavaScript)的新手,但在最近几周的学习中我真的很喜欢它。

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

部分实现如下:

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

我想在这里实现两件事:

1) 超时后返回 true/false。

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

最佳答案

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

这样您就可以根据条件是否超时执行不同的操作。

我认为不从函数返回 promise 会很棘手。因为 Protractor 中所做的一切都是异步发生的。

关于javascript - 对于 Protractor 测试,我们可以在没有 browser.wait() 函数的情况下获取 waitElement 对象值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30961153/

相关文章:

javascript - Facebook 选项卡应用程序 Canvas 高度 - firefox 问题

javascript - 使用 setTimeout 动态创建多个幻灯片放映

javascript - 异步函数总是返回 undefined

c# - IntPtr.Zero 是否等同于 null?

javascript - 如何处理 Protractor 中的 UnexpectedAlertOpenError

javascript - OpenLayers http刷新回调函数

javascript - 如何复制jquery函数?

c# - _ = Task.Run vs async void | Task.Run 与 Async Sub

java - Selenium Standalone 已退出,代码为 1/系统找不到指定的路径

javascript - 追加到 Jasmine 中的 'IT'描述名