t.me/atinfo_chat Telegram группа по автоматизации тестирования

Работа с коллекцией элементов в асинхронном JS

Теги: #<Tag:0x00007fd772466648> #<Tag:0x00007fd7724662d8> #<Tag:0x00007fd772465f40> #<Tag:0x00007fd772465ae0>

Использую Protractor + WD
Хочу получить текст всех эелементов со страници по Css селектору а дальше провалидировать каждый сравнив с ожидаемым.

elementsByCss("body > *")
			.then(function(element) {
				console.log(element);
                                console.log(typeof element); // object
			 });

image

Как дождаться всех промисов и получить коллекцию из текстовых значений?

Попытка решить это методами “из коробки” приводит к тому что он все значения лепит в одну строку, разделять по символу “\n” не очень хочется. Возможно есть более правильный подход?

.elementsByCss("body > *")
			.text()
			.then(function(text) {
				text;
				console.log(text);
				text.indexOf("Andrey");
			 });

Обратите внимание на метод “each” https://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.each
Если я Вас верно понял, конечно.
А так можно что-то типа:
it (‘should do smth’, async () => {
/* your code here */
expect (what).each(() =>
smth.then => expect matching)

А лучше используй executeScript и работай с чистыми нодами.

попробую, спасибо!