如何等待元素不再存在

时间:2014-12-04 09:35:52

标签: protractor

我有一个量角器测试导航到另一个url,在我的测试环境中无法找到/解析,所以我检查标题是不是以前的标题。

测试如下:

it('should navigate to another site in case of click on cancel link', function () {
    page.navigate();
    page.submit();
    protractor.getInstance().ignoreSynchronization = true;
    browser.wait(function(){
        return element(by.id('submit')).isPresent();
    });
    page.closePage();
    // the title of a 404, dns issue etc is at least different from the previous site:
    expect(browser.getTitle()).not.toEqual('MyDummyTitle')
    protractor.getInstance().ignoreSynchronization = false;
});

这在大多数浏览器中都有效,但在Internet Explorer中,我发现当期望被触发时,它通常没有准备好导航到不存在的页面。

我能以某种方式等待提交'要消失的元素,类似于我在激活closePage之前所做的事情?

1 个答案:

答案 0 :(得分:2)

在这种情况下我做的是active wait of an element to disappear

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

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

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

等待#submit消失的示例:

expect(element(by.id('submit')).waitAbsent()).toBeTruthy();