Существует несколько методов, которые можно вызвать для массивов элементов , которые вы можете увидеть здесь .Я бы выполнил это, используя либо фильтр, либо уменьшение.
Есть два дальнейших подхода, которые вы можете попробовать, но я не уверен, что они более прямолинейны, чем решение, которое вы придумали.
Уменьшить
//Using reduce we will call a function on every element in an array and
// end up with a single value (true ro false in this case)
let allValuesAreE2E = $$('td > p:nth-child(3)').reduce(function (acc, elem) {
//If accumlator value is false
if (!acc) return false;
//return whether or not
return elem.getText().then(function (text) {
return text === 'e2e';
});
}, 'initVal');
expect(allValuesAreE2E).toBeFalsy();
Фильтр выполнит функцию для каждого элемента в массиве и удалит те, которые не удовлетворяют определенному условию (в вашем случае text = e2e)
const allContainE2E = $$('td > p:nth-child(3)')).count().then(numElements =>
return numElements === $$('td > p:nth-child(3)')).filter(element => {
return element.getText().then(text => text === 'e2e')
})
})
{
expect(allContainE2E.count()).toBeGreaterThan(0) // use Jasmine