CasperJS - 表行的屏幕截图

时间:2013-12-19 13:46:39

标签: javascript casperjs

我从CasperJS开始,我对«capture»功能很感兴趣。对于«exercise»,我想要捕获表格的每一行:

<table id="idTable">
    <thead>
        <tr id="theader">
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
    </thead>
    <tbody>
        <tr class="" rel="xx">
            <td>Content1</td>  
            <td>Content2</td>  
            <td>Content3</td>  
        </tr>
    </tbody>
</table>

到目前为止,我在这里:

var casper = require('casper').create({
    clientScripts: ["jquery.min.js"]
});

function createScreenshots() {
    var i = 0;
    $('#idTable > tbody  > tr').each(function() {       
        this.captureSelector('myscreens/'+i+'.png', $(this).selector);
        i++;
    });
}
casper.start('mywebsite.com',function(){
    this.evaluate(createScreenshots);
});
casper.run();

但没有任何作用(没有错误,但«myscreens»文件夹中没有截图)。如果有人可以告诉我的方式?

提前致谢,

Kai23

2 个答案:

答案 0 :(得分:0)

页面上下文中无法访问

this.captureSelector。您需要在页面上下文之外进行迭代。

casper.start('mywebsite.com',function(){
    var rows = this.evaluate(function(){
        return document.querySelectorAll("#idTable > tbody  > tr").length;
    });

    for(var i = 0; i < rows; i++) {
        this.captureSelector('myscreens/'+i+'.png', '#idTable > tbody  > tr:nth-of-type('+i+')');
    }
});
casper.run();

答案 1 :(得分:-1)

你的jQuery版本是什么?

您是否尝试过打印$(this).selector

$('#idTable > tbody  > tr').each(function() {
  echo $(this).selector;
  i++;
});