web-dev-qa-db-ja.com

分度器:要素が不可視/非表示になるのを待つ

分度器に関連する他の投稿で、要素が表示されるのを待つ方法について言及しているのを見ました。しかし、最近、私は反対のユースケースに遭遇しました。要素が見えなくなるまで要素を待ちたいと思いました。私はそれについて特定のものを見つけることができなかったので。私は先に進み、解決策を考え出しました。

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

うまくいけば、それが役立ちます。どんな提案も大歓迎です。

おかげで、

21
vichsu

Elementexplorerを使用して( https://github.com/angular/protractor/blob/master/docs/debugging.md )分度器オブジェクトを見て、動作している答えを見つけました私にとっては素晴らしい

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

@Machtynからこれは正しい答えであるはずです:var EC=protractor.ExpectedConditions; browser.wait(EC.not(EC.presenceOf(el)), someTimeoutInMilli);

8
Daniel Bressan

解決策はありません。以下のコードをご覧ください:

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