Транспортир, подсчитывающий строку таблицы в асинхронном методе

#javascript #jasmine #protractor

#javascript #jasmine #транспортир

Вопрос:

Я пытаюсь подсчитать строки таблицы с помощью транспортира. Ниже приведен мой код

 this.rowNumbersInFileMatches = async function () {
    expect(await locator.Student_List_Table.isPresent()).toBeTruthy();

   // This is test using conventional .then function

    $$('#studentListTable > tbody > tr').then(function(Rows){

        R1 = Rows.length;
        console.log('Number of Rows in Then Method'   R1);

    });

    //This is using async await

    let R2 = $$('#studentListTable > tbody > tr');
    console.log('n*** Number of Rows in the table is : '   await R2.length);

};
  

Когда скрипт выполняет .затем блокирует, он правильно идентифицирует строки и возвращает номера строк, но при использовании функции async await он возвращает undefined.

Ниже приведен соответствующий журнал:

 Started
..Total number of records to be shown: 2
.
*** Number of Rows in the table is : undefined
Number of Rows in Then Method2
  

Как я могу исправить это в методе async await? Я пытаюсь избежать .затем функция полностью.

Ответ №1:

$$ который является псевдонимом для element.all возвращает объект ElementArrayFinder, у которого есть метод count. Следовательно, ваш код может быть переписан следующим образом

 const items = $$('#studentListTable > tbody > tr');
const countOfItems = await items.count();