Как проверить, является ли элемент видимым с помощью Protractor?

Я использую программное обеспечение Protractor для тестов с конца до конца. Некоторые элементы устанавливаются с помощью ng-show.

Может ли кто-нибудь сказать мне, как я могу проверить, видимы ли эти элементы или нет с помощью Protractor?

Ответ 1

Предполагая, что ваш элемент имеет идентификатор "foo", вы могли бы сделать, например

expect($('#foo').isDisplayed()).toBe(true); // or false to test that it hidden

или

expect(element(by.id('foo')).isDisplayed()).toBe(true); 

Ответ 2

Я обнаружил, что isDisplayed() возвращает обещание, а в. then, вам передается логическое значение. Так выглядит более как это:

$('#foo').isDisplayed().then(function(isDisplaying) {
    expect(isDisplaying).toBe(true);
  });

Ответ 3

ожидаем, что знает, что имеет дело с обещанием, поэтому следующие работы.

expect($('#foo').isDisplayed()).toBe(true);

Ответ 4

Предполагая, что у вас много элементов одним и тем же id/class, и вы хотите assert подсчитать количество видимых элементов

var elements = element.all(by.id('foo'))
               .filter(function(el){
                    return el.isDisplayed();
                });

expect(elements.count()).toEqual(2);