Как получить значения из сетки и выполнить суммирование в PROTRACTOR
Я совершенно новичок в Protractor и Javascript. Я пытаюсь написать тестовый скрипт, который может получать значения некоторых учетных записей под заголовком "Доход" (изображение ниже)
Мне нужно получить все числовые значения, указанные в заголовке "Доход", и выполнить операцию "СУММА". Проблема в том, что я не могу получить все значения, используя цикл или ng-repeat
, Ниже показано, как выглядит моя DOM:
У меня есть 89 td
/tr
теги под tbody
как показано на картинке выше.
Может ли кто-нибудь помочь мне с логикой того, как я могу получить все значения, используя tbody
и выполнить операции SUM для извлеченных значений?
1 ответ
С этим у вас будет то, что вы хотите:
function sumValueInColumn(tableID, columnNumber, expectedResult){
var expectedCells = element.all(by.css('#'+tableID+' tr td:nth-of-type(2)'));
var currentSum = 0;
expectedCells.each((eachCell) => {
eachCell.getText().then((cellText) => {
currentSum += Number(cellText);
});
}).then(() => {
expect(currentSum.toString()).toEqual(expectedResult);
});
}//END OF sumValueInColumn
Итак, я буду объяснять построчно
в этой строке вы фиксируете все значения столбцов из таблицы и определенного столбца. Замените var tableID на id (или другой селектор css) вашей таблицы, кодовая часть 'nth-of-type(2)' относится к столбцам, так что в вашем случае это номер 2 для второго столбца... вы можете сделайте что-то вроде этого, чтобы можно было получить значение из параметра функции:
var expectedCells = element.all(by.css('#'+tableID+' tr td:nth-of-type('+columnNumber+')'));
Итак, теперь переменная Ожидаемые ячейки имеет массив всех чисел (в виде строки).
В этой части вы получаете массив, получаете текст каждой позиции, преобразуете в Numeric и выполняете математическую операцию, которую вы хотите (sum): * В вашем случае, работайте со строкой перед преобразованием в Numeric, убедитесь, что вы отправка только номеров
expectedCells.each((eachCell) => {
eachCell.getText().then((cellText) => {
currentSum += Number(cellText);
});
})
Последняя часть представляет собой последовательность обещаний, которая позволит вам использовать переменную currentSum и сравнивать с ожидаемым значением (или просто делать что-то еще)