Итерация над элементами DOM в DalekJS

Вопрос:

Кто-нибудь знает простой способ перебора и использования всех элементов, соответствующих запросу с использованием API?

Самый простой пример использования — это не настоящий код, но, надеюсь, вы знаете, что им нужно.

test.query('textarea').each(function(v, i){
this.type(v.id, 'test' + i);
});

Я могу сделать это с помощью произвольного JS exec, jQuery и т.д. Я просто считаю, что Dalek, вероятно, делает то, что я пропустил

Благодарю!

РЕДАКТИРОВАТЬ

Оказывается, моя резервная копия JS exec не работает…

test
.execute(function(){
var textareaIds = [];
(function($){
$('textarea').each(function(){
textareaIds.push($(this).attr('id'));
});

})(window.jQuery);
this.data('textareaIds', textareaIds);
});

Но, возможно, из-за того, как выполняется выполнение очереди кода, вы не можете использовать массив в цикле for after. Я что-то пропустил?

Ответ №1

Мы собираемся улучшить сеанс API в предстоящей версии DalekJS, поэтому повторение элементов DOM и взаимодействие между JavaScript, выполняемыми на стороне клиента, и JavaScript, выполненные на сервере, как часть тестов, будут сильно задушить.

Что касается вашего неработающего примера выполнения. Вы не можете просто использовать данные, переданные через this.data в коде узла после этого, вам нужно добавить его в цепочку. Поскольку это очень экспериментальная функция, мы на самом деле не реализовали API, который может работать с данными позже.

Одна вещь, которую вы можете сделать, злоупотребляет методом log.message следующим образом:

.execute(// your code)
.log.message(function () {
// get the data
var myArray = test.data('textareaIds');
// do something with it
require('fs').writeFileSync('myFile.txt', JSON.stringify(myArray));
})

Я полагаю, что это не совсем то, что вам нужно/нужно, но повторное использование этих данных для дальнейших тестов и утверждений пока невозможно. Но мы работаем над этим.

Оцените статью
TechArks.Ru
Добавить комментарий