Protractor 确认元素在量角器中消失

Protractor 确认元素在量角器中消失,protractor,angularjs-e2e,Protractor,Angularjs E2e,出于等待目的,我使用此类等待函数: browser.wait(function() { return browser.isElementPresent(by.repeater('recentName in recentNames').row(0)); }, 10000); 如何等待元素从页面中消失?我有一个项目,它有很多模态窗口,因为元素总是出现在页面上,我有时会遇到困难和测试失败,因为我使用了错误的元素等待。例如,我有这样的元素,当模式窗口在单击Ent

出于等待目的,我使用此类等待函数:

    browser.wait(function()
    {
        return browser.isElementPresent(by.repeater('recentName in recentNames').row(0));
    }, 10000);
如何等待元素从页面中消失?我有一个项目,它有很多模态窗口,因为元素总是出现在页面上,我有时会遇到困难和测试失败,因为我使用了错误的元素等待。例如,我有这样的元素,当模式窗口在单击Enter后关闭时消失:

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

您可以使用自定义帮助器函数,该函数通过不可见或不存在来主动等待元素消失

该帮助程序最多等待
specTimeoutMs
忽略无用的webdriver错误,如
StaleElementError

用法:添加
require('./wait缺席.js')在块或文件中

等待模态消失的示例:

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

如果元素已经存在于页面上,您可以使用回调:D,利用
browser.wait()
轮询页面,直到传递给它的函数计算为
true

browser.wait(function()
    {
        return browser.isElementPresent(by.repeater('recentName in recentNames').row(0)) //if element is already present, this line will evaluate to true
               .then(function(presenceOfElement) {return !presenceOfElement}); // this modifies the previous line so that it evaluates to false until the element is no longer present. 
    }, 10000);
现在推荐使用量角器。您可以将它与
browser.wait结合使用,为各种状态创建等待条件,其中包括
元素的不可见性(如果隐藏)或
元素的过时性(如果从DOM中删除)

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

我可以确认,这是目前解决此问题的最佳解决方案。非常感谢,利奥!