迭代DalekJS中的DOM元素

时间:2014-07-23 16:42:33

标签: javascript 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循环中使用该数组。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我们将在即将推出的DalekJS版本中改进API会话,因此迭代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));
})

我认为这不是您想要/需要的,但是重用该数据进行进一步的测试和断言是不可能的。但是我们正在努力。

相关问题