1

有谁知道使用 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 循环中使用该数组。我错过了什么吗?

4

1 回答 1

1

我们将在即将发布的 DalekJS 版本中改进 API 会话,因此作为测试的一部分,迭代 DOM 元素以及在客户端执行的 JavaScript 与在服务器上执行的 JavaScript 之间的交互将变得非常困难。

关于您不工作的执行示例。之后您不能只使用this.data在 Node 代码中传递的数据,您需要将其添加到链中。由于这是一个非常实验性的功能,我们并没有真正实现以后可以处理数据的 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));
})

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

于 2014-08-12T22:17:36.027 回答