Транспортир: подождите, пока элемент станет невидимым/скрытым

Я видел другой пост, связанный с транспортиром, в котором упоминалось, как дождаться, пока элемент станет видимым. Однако недавно я столкнулся с противоположным вариантом использования. Я хотел дождаться элемента, пока он не станет невидимым. Так как ничего конкретного по нему не нашел. Я пошел дальше и нашел решение.

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

надеюсь, это поможет. любое предложение приветствуется.

Спасибо,


person vichsu    schedule 16.10.2014    source источник


Ответы (4)


Используя elementexplorer (https://github.com/angular/protractor/blob/master/docs/debugging.md) Я посмотрел на объект транспортира и нашел ответ, который работает чудесно для меня:

var el = element(by.id('visibleElementId'));
browser.driver.wait(protractor.until.elementIsNotVisible(el));
person Al Joslin    schedule 28.12.2014
comment
Однако я столкнулся с другой проблемой, я отправлю еще один вопрос, связанный с этим. - person vichsu; 10.02.2015
comment
вот этот пост. stackoverflow.com/questions/28422011/ - person vichsu; 10.02.2015
comment
Я не могу найти никакой документации для protractor.until. Что это такое? Что оно делает? - person qntm; 10.02.2016
comment
protractor.until для меня не определено. - person DarthVanger; 04.08.2016
comment
из транспортира API вы можете сделать: var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)); - person Machtyn; 30.08.2016
comment
@qntm protractor.until — это ссылка на модуль until в пакете selenium-webdriver. Он используется в первом примере в их файле README: npmjs.com/package/selenium-webdriver< /а> - person eppsilon; 09.03.2017

От @Machtyn Это должен быть правильный ответ: var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)), someTimeoutInMilli);

person Daniel Bressan    schedule 07.02.2017
comment
Это вызовет ошибку в EC.presenceOf(el), поэтому он не получит не - person Raymond Kelly; 19.12.2018

В Protractor теперь встроена функция 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);

Подробнее читайте

person Mishel Tanvir Habib    schedule 04.09.2020

Ни одно из решений не работает для меня. Пожалуйста, взгляните на код ниже:

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);
 });
});
person Shivang Gupta    schedule 19.02.2018