量角器:等待元素变得不可见/隐藏

时间:2014-10-16 18:38:24

标签: element wait hidden protractor invisible

我看到其他量角器相关帖子提到了如何等待元素变得可见。但是,最近,我遇到了一个相反的用例。我想等一个元素,直到它变得不可见。因为我找不到任何具体的信息。我继续前进,想出了一个解决方案。

var ptor = protractor.getInstance();
    ptor.wait(function() {

        return element(by.css('#my-css-here')).isDisplayed().then(function(isVisible){
            console.log('is visible :' + isVisible);
            return !isVisible;
        });

    }, 12000).then(function(){
        //do whatever you want 
});

希望它有所帮助。任何建议都是受欢迎的。

谢谢,

4 个答案:

答案 0 :(得分:16)

使用elementexplorer(https://github.com/angular/protractor/blob/master/docs/debugging.md)我查看了量角器对象,找到了一个对我来说非常有效 的答案:

var el = element(by.id('visibleElementId'));
browser.driver.wait(protractor.until.elementIsNotVisible(el));

答案 1 :(得分:8)

来自@Machtyn 这应该是正确的答案: var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)), someTimeoutInMilli);

答案 2 :(得分:0)

没有一个解决方案适合我。请看下面的代码:

var protractor = require('protractor');

describe('Testing', function () {
it('Should show the settings button', function () {
    var EC = protractor.ExpectedConditions;
    var settings = $('.settings');
    var isSettingVisible = EC.visibilityOf(settings);

    browser.get('http://localhost:8080/#/edomonitor');
        console.log("--------------------welcome 1-------------------");

    protractor.browser.wait(isSettingVisible, 10000, "Searching for settings").then(() => {
       console.log("waiting complete");
    }, (error) => {
       console.log(error);
    })
    expect(2).toEqual(2);
 });
});

答案 3 :(得分:0)

量角器现在内置了invisibilityOf函数。

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be no longer visible on the dom.
browser.wait(EC.invisibilityOf($('#abc')), 5000);

Read more for details