我想使用.fmBigTbl类获取表中所有td的文本。
当我进行硬编码时,使用no代替例如piElementstd:nth-of-type(2)。上面的作品,但当我使用变量而不是数字时,它会输出null。

如何遍历表格中的所有td?

 piElements = 1;
 var data;
 var count = 5;
 this.repeat(count, function() {
      this.then(function() {
         data = this.evaluate(function() {
             return  $('.fmBigTbl').find('td:nth-of-type('+piElements+').fmLblCell2').text();
         });
         this.echo(data);
         piElements++;
      });
 });

最佳答案

evaluate被沙箱化。内部(页面上下文)不能简单地访问外部范围(casper上下文)中的变量。您需要将piElements明确传递给evaluate

data = this.evaluate(function(piElements) {
    return  $('.fmBigTbl').find('td:nth-of-type('+piElements+').fmLblCell2').text();
}, piElements);


docs


  注意:参数和评估函数的返回值必须是一个简单的原始对象。经验法则:如果可以通过JSON序列化,那就很好。


或者您可以简单地使用casper.fetchText

data = this.fetchText('.fmBigTbl td:nth-of-type('+piElements+').fmLblCell2');

09-20 13:22