量角器等待条件不应该在超时后失败

han*_*aad 1 javascript webdriver angularjs selenium-webdriver protractor

ExpectedConditions.visibilityOf如果元素不可见,是否可以在没有失败的情况下等待?我想处理的情况,其中一个按钮的威力已经通过动画变得可见,点击它拿走.

browser.wait(conditions.visibilityOf(button), 500).then(function (visible) {
    if (visible) {
        return button.click().then(function () {/*...*/});
    }
});
Run Code Online (Sandbox Code Playgroud)

han*_*aad 11

我发现,我可以处理被拒绝的承诺,wait以抑制超时错误:

browser.wait(conditions.visibilityOf(button), 500).then(function () {
    // It is visible
    return button.click().then(function () {/*...*/});    

}, function() {
    // It is not visible
    if (shouldExpectVisibility) {
        // If I want to fail, I could reject again
        return protractor.promise.rejected('No such button');
    }
    else {
        // If I don't want to fail, I do nothing  
    }
});
Run Code Online (Sandbox Code Playgroud)