транспортир - как проверить наличие элементов, если они имеют одинаковое название модели

0

Ниже приведен мой HTML-код для текстового поля. В protractor element.all(by.model('phoneNumber.areaCode')) возвращает мне счет из двух, который является истинным. Но мне нужно проверить, присутствует ли каждое текстовое поле или нет. так как я могу сделать, чтобы итерации и проверять один за другим, чтобы увидеть, присутствует ли этот элемент или нет.

Plz помогите мне в этом вопросе.

Примечание. Я просто хочу пойти только с помощью локатора модели, а не с помощью какого-либо другого локатора

Мой Html ниже

<input disabled="disabled" required="required" class="ng-pristine ng-untouched ng-invalid ng-invalid-required ng-valid-pattern ng-valid-maxlength" digit3="" ng-pattern="/^[0-9]{3}$/" name="areaCode" ng-model="phoneNumber.areaCode" maxlength="3" no-validation-on-focus="" ng-change="inputValidate('areaCode')" ng-disabled="disable" ng-required="required" id="areaCode" type="text">

Теги:
protractor

3 ответа

1

На самом деле комбинация двух существующих ответов - each() и expect() + isDisplayed() - наиболее распространенный способ проверки видимости каждого элемента в массиве:

var areaCodes = element.all(by.model('phoneNumber.areaCode'));
areaCodes.each(function (areaCode) {
    expect(areaCode.isDisplayed()).toBe(true);
});

Вы также можете reduce() отображение нескольких элементов в одном логическом значении и сделать ожидание один раз:

var areaCodes = element.all(by.model('phoneNumber.areaCode'));
var areAllDisplayed = areaCodes.reduce(function (acc, areaCode) {
    return areaCode.isDisplayed().then(function (isDisplayed) {
        return isDisplayed && acc;
    });
}, true);
expect(areAllDisplayed).toBe(true);

Также обратите внимание, что вы можете вызвать isDisplayed() в массиве элементов, который будет обещанием, которое разрешается в массив логических элементов:

var areaCodes = element.all(by.model('phoneNumber.areaCode'));
expect(areaCodes.isDisplayed()).toEqual([true, true, true]);

Все это предполагает, что вы были на самом деле предназначены для проверки видимости, а не для присутствия, как в вашем исходном состоянии вопроса.

0

когда вы решаете метод element.all(), он возвращает массив массивов элементов в качестве результата. Затем вы можете выполнить итерацию по массиву и проверить, присутствуют ли все элементы. Попробуйте приведенный ниже код.

element.all(by.model('phoneNumber.areaCode')).then(function(arrayOfElement){
  for(i=0;i<arrayOfElement.length;i++){
    expect(arrayOfElement[i].isDisplayed()).toBeTruthy();
  }
})
  • 0
    Большое спасибо, Суреш, и теперь Судхарсан работает нормально.
  • 0
    Еще раз большое спасибо за быстрый ответ.
0

Для того, чтобы перебирать, вы должны применять каждый() метод на element.all(). Внутри цикла вы можете использовать protractor.ExpectedConditions для проверки видимости каждого элемента в цикле. Вы можете следовать приведенному ниже коду:

Фрагмент кода:

var EC=protractor.ExpectedConditions;
element.all( by.model('phoneNumber.areaCode')).each(function(eachInputField, 
                                                          index){
 expect(EC.visibilityOf(eachInputField).call()).toBe(true,'element at 
                           index'+index+' is not visible');
 });
  • 0
    @ Баладжи, круто. Пожалуйста :). отметьте тот, который вы использовали

Ещё вопросы

Сообщество Overcoder
Наверх
Меню