Кто-нибудь знает простой способ перебора и использования всех элементов, соответствующих запросу с использованием 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. Я что-то пропустил?
Мы собираемся улучшить сеанс 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));
})
Я полагаю, что это не совсем то, что вам нужно/нужно, но повторное использование этих данных для дальнейших тестов и утверждений пока невозможно. Но мы работаем над этим.