验证元素在量角器中消失

时间:2014-11-27 14:45:52

标签: protractor angularjs-e2e

出于等待目的,我使用了这种等待功能:

    browser.wait(function()
    {
        return browser.isElementPresent(by.repeater('recentName in recentNames').row(0));
    }, 10000);

我如何等待元素从页面中消失?我的项目有很多模态窗口,因为元素总是出现在页面上我不时遇到困难和测试失败,因为我使用了错误的元素等待。例如,我有这样的元素,在单击回车后关闭模态窗口时消失:

<div class="modal-backdrop  in"></div>

3 个答案:

答案 0 :(得分:10)

现在推荐使用量角器ExpectedConditions来实现此目的。您可以将它与browser.wait结合使用,为各种状态创建等待条件,其中包括invisibilityOf(如果被隐藏)或stalenessOf(如果从DOM中删除)元素。

browser.wait( EC.invisibilityOf( $('#selector') ), 5000 );

答案 1 :(得分:5)

您可以使用自定义waitAbsent()辅助函数,该函数通过变为不可见或不存在来主动等待元素消失。

该帮助程序等待specTimeoutMs忽略无效的webdriver错误,例如StaleElementError

用法:在onPrepare块或文件中添加require('./waitAbsent.js');

等待模态消失的示例:

expect($('.modal-backdrop.in').waitAbsent()).toBeTruthy();

答案 2 :(得分:1)

如果元素已经出现在页面上,那么你可以使用回调来解决问题:D,利用browser.wait()轮询页面的事实,直到传递给它的函数计算为{{1} }。

true