web-dev-qa-db-fra.com

Rapporteur: attend que l'élément devienne invisible/caché

J'ai vu un autre article lié à un rapporteur qui explique comment attendre qu'un élément devienne visible. Cependant, récemment, j'ai rencontré un cas d'utilisation opposé. Je voulais attendre un élément jusqu'à ce qu'il devienne invisible. Depuis je ne pouvais rien trouver de spécifique à ce sujet. Je suis allé de l'avant et suis venu avec une solution.

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 
});

j'espère que ça aide. toute suggestion est la bienvenue. 

Merci,

21
vichsu

Utilisation de l'élémentexplorer ( https://github.com/angular/protractor/blob/master/docs/debugging.md ) J'ai examiné l'objet rapporteur et trouvé une réponse qui fonctionne à merveille pour moi:

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

De @Machtyn Cela devrait être la bonne réponse: var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)), someTimeoutInMilli);

8
Daniel Bressan

Aucune des solutions ne fonctionne pour moi. S'il vous plaît jeter un oeil à code ci-dessous:

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);
 });
});
0
Shivang Gupta