Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器等待条件在超时后不应失败_Javascript_Angularjs_Selenium Webdriver_Webdriver_Protractor - Fatal编程技术网

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

Javascript 量角器等待条件在超时后不应失败,javascript,angularjs,selenium-webdriver,webdriver,protractor,Javascript,Angularjs,Selenium Webdriver,Webdriver,Protractor,如果元素不可见,是否可以等待ExpectedConditions.visibilityOf而不出现故障?我想处理一种情况,在这种情况下,一个按钮可能通过动画变得可见,然后单击它离开 browser.wait(conditions.visibilityOf(button), 500).then(function (visible) { if (visible) { return button.click().then(function () {/*...*/});

如果元素不可见,是否可以等待
ExpectedConditions.visibilityOf
而不出现故障?我想处理一种情况,在这种情况下,一个按钮可能通过动画变得可见,然后单击它离开

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

我发现,我可以处理
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  
    }
});

我发现,我可以处理
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  
    }
});

为什么不直接使用
浏览器。等等(500)
?它将等待500毫秒,然后执行其后的任何操作,而不管元素的可见性如何。然后,您可以尝试选择元素或检查其可见性。@JeremyThille可能,但它将始终等待500毫秒,即使按钮在1毫秒后可见。为什么不使用
浏览器。等待(500)
?它将等待500毫秒,然后执行其后的任何操作,而不管元素的可见性如何。然后您可以尝试选择元素或检查其可见性。@JeremyThille可能,但它将始终等待500毫秒,即使按钮在1毫秒后可见。谢谢!帮助解决了我今天遇到的同一个问题!谢谢帮助解决了我今天遇到的同一个问题!